diff --git a/push_notifications.module b/push_notifications.module
index 0ad121a..7b93979 100644
--- a/push_notifications.module
+++ b/push_notifications.module
@@ -552,6 +552,9 @@ function push_notifications_apns_send_message($tokens, $payload) {
     $payload_apns['aps']['sound'] = PUSH_NOTIFICATIONS_APNS_NOTIFICATION_SOUND;
   }
 
+  // Allow other modules to modify the complete payload before being sent.
+  drupal_alter('push_notifications_apns_payload', $payload_apns);
+
   // JSON-encode the payload.
   $payload_apns = json_encode($payload_apns);
 
@@ -725,6 +728,9 @@ function push_notifications_c2dm_send_message($tokens, $payload) {
     $data['collapse_key'] = time();
     $data['data.message'] = $payload['alert'];
 
+    // Allow other modules to modify the complete payload before being sent.
+    drupal_alter('push_notifications_g2dm_payload', $data);
+
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, PUSH_NOTIFICATIONS_C2DM_SERVER_POST_URL);
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
@@ -833,6 +839,9 @@ function push_notifications_gcm_send_message($tokens, $payload) {
     $data['collapse_key'] = (string) time();
     $data['data']['message'] = $payload['alert'];
 
+    // Allow other modules to modify the complete payload before being sent.
+    drupal_alter('push_notifications_gcm_payload', $data);
+
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, PUSH_NOTIFICATIONS_GCM_SERVER_POST_URL);
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
