Requex.me LogoRequex.me

Documentation

Browse by section

Keep all guides, tool docs, automation recipes, and comparison pages in one navigable place.

Docs Home
Docs

Foundation docs for getting started fast, understanding key terms, and tracking what has changed.

Guides

Start with fundamentals, then move into provider-specific webhook testing and production hardening.

Tool Docs

These pages explain what each tool does, when to use it, and how it fits into a webhook debugging workflow.

Automation Docs

Use these setup guides when you want forwarding rules, custom responses, security checks, or multi-destination fanout.

Compare

Use these pages to compare developer workflows, pricing tradeoffs, and feature differences between webhook tools.

How to Test AWS SNS HTTP Endpoints

Confirm SNS subscriptions, capture notification payloads, and debug delivery issues — without a deployed server or AWS credentials.

Editorially reviewed by the Requex team11 min readAbout the product

TL;DR: AWS SNS sends HTTP/S notifications to any public URL. It first sends a SubscriptionConfirmation request that your endpoint must confirm by visiting the SubscribeURL. Requex captures both messages so you can inspect them before building your real handler.

How AWS SNS HTTP Delivery Works

Amazon Simple Notification Service (SNS) delivers messages to HTTP/HTTPS endpoints by sending POST requests with a JSON body. The delivery flow is two-phase: SNS first verifies that your endpoint is reachable and willing to accept notifications, then starts delivering actual messages.

Every SNS message has a Type field that tells you which phase you are in. The three types you will encounter are:

The SubscriptionConfirmation message contains a SubscribeURL field — a pre-signed AWS URL. Your endpoint must make a GET request to that URL to activate the subscription. Until this is done, SNS will not deliver any Notification messages, and the subscription will remain in a Pending confirmation state in the AWS Console.

Requex captures the SubscriptionConfirmation payload so you can copy the SubscribeURL and confirm manually — no code required.

SNS Message Types

TypeWhen
SubscriptionConfirmationFirst message sent after creating the subscription
NotificationActual event message published to the topic
UnsubscribeConfirmationSent after unsubscribing; can be re-confirmed

Step 1: Generate a Requex Endpoint

Open requex.me. A unique HTTPS webhook URL is generated automatically. Copy it from the dashboard:

https://requex.me/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

SNS requires a valid HTTPS endpoint — Requex satisfies this requirement out of the box. You do not need a running server, an AWS account, or any local setup.

Step 2: Subscribe to an SNS Topic

In the AWS Console, navigate to SNS and subscribe your Requex endpoint to a topic:

  1. Go to AWS Console → SNS → Topics.
  2. Select the topic you want to test (or create a new one).
  3. Click Create subscription.
  4. Set Protocol to HTTPS.
  5. Paste your Requex URL into the Endpoint field.
  6. Leave Enable raw message delivery off for now — the default JSON envelope is easier to inspect.
  7. Click Create subscription.

The subscription status will show Pending confirmation. SNS immediately sends the SubscriptionConfirmation message to your Requex URL — you should see it appear in the dashboard within a few seconds.

Step 3: Confirm the Subscription

In Requex, click the captured SubscriptionConfirmation request. Find the SubscribeURL field in the JSON body:

{
  "Type": "SubscriptionConfirmation",
  "MessageId": "165545c9-2a5c-4b4d-bc5c-a5caab18d4b0",
  "Token": "2336412f37...",
  "TopicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
  "Message": "You have chosen to subscribe to the topic...",
  "SubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-1:123456789012:MyTopic&Token=2336412f37...",
  "Timestamp": "2026-04-05T10:00:00.000Z",
  "SignatureVersion": "1",
  "Signature": "EXAMPLEpH+DcEwjAPg8O...",
  "SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-abc123.pem"
}

Copy the entire SubscribeURL value and open it in your browser. AWS responds with an XML confirmation. Go back to the AWS Console — the subscription status should now show Confirmed.

Step 4: Publish a Test Message

Now that the subscription is confirmed, publish a message to the topic to see a real Notification delivery:

  1. In the AWS Console, go to SNS → Topics → [your topic].
  2. Click Publish message.
  3. Enter a subject and message body (e.g., {"event": "test", "value": 42}).
  4. Click Publish message.

The notification appears in Requex within seconds. The Notification message looks like:

{
  "Type": "Notification",
  "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
  "TopicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
  "Subject": "Test notification",
  "Message": "{"event": "test", "value": 42}",
  "Timestamp": "2026-04-05T10:05:00.000Z",
  "SignatureVersion": "1",
  "Signature": "EXAMPLEpH+DcEwjAPg8O...",
  "SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-abc123.pem",
  "UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&..."
}

Note that the Message field is a JSON-encoded string by default. Your handler will need to JSON.parse(body.Message) to access the inner payload.

SNS Message Signing

AWS signs every SNS message to allow your endpoint to verify authenticity. The signature-related fields in each message are:

FieldPurpose
SignatureBase64-encoded RSA signature over specific message fields
SignatureVersionSigning algorithm version (currently 1 for SHA1withRSA)
SigningCertURLURL of the PEM certificate used to sign the message

To verify the signature in production, use the official AWS SDK helper. Here is a Node.js example:

const { MessageValidator } = require('sns-validator');

const validator = new MessageValidator();

app.post('/webhooks/sns', express.json({ type: 'text/plain' }), (req, res) => {
  validator.validate(req.body, (err, message) => {
    if (err) {
      console.error('SNS signature validation failed:', err);
      return res.status(403).send('Invalid signature');
    }

    switch (message.Type) {
      case 'SubscriptionConfirmation':
        // Auto-confirm by visiting SubscribeURL
        fetch(message.SubscribeURL).then(() => {
          console.log('SNS subscription confirmed');
        });
        break;

      case 'Notification':
        const payload = JSON.parse(message.Message);
        console.log('SNS notification:', payload);
        break;
    }

    res.status(200).send('OK');
  });
});

During development with Requex, you can inspect the raw Signature and SigningCertURL values to confirm that SNS is signing messages correctly before wiring up signature verification in your production code.

Common SNS Webhook Issues

IssueCauseFix
Subscription stays PendingSubscribeURL not visitedCopy the SubscribeURL from the confirmation payload in Requex and open it in a browser
No messages arriving after confirmationHTTPS required by SNSSNS requires a valid HTTPS certificate; Requex provides this automatically — do not use plain HTTP URLs
SignatureVerificationFailure in productionMessage tampering or certificate issueValidate using the AWS SDK sns-validator package; never implement signature verification manually

Test Your SNS Endpoint Now

Get a valid HTTPS endpoint in seconds. Confirm subscriptions, inspect payloads, and debug SNS delivery — no server needed.

Open Requex →

Related guides

Start Testing Webhooks Now

Generate your unique URL and test webhooks instantly. Free, no signup.

Open Webhook Tester →