Messaging
What's the difference between /send/messages and /send/whatsapp_templated_messages?
What's the difference between /send/messages and /send/whatsapp_templated_messages?
/send/whatsapp_templated_messages to initiate a conversation — when the customer hasn’t messaged you before, or their 24-hour session window has expired. Templates are pre-approved by Meta and can be sent at any time.Use /send/messages to reply within an active session — the customer must have messaged you first within the last 24 hours. Session messages are free-form and don’t require pre-approval.See Messaging API overview for a full comparison table.I'm getting ERROR_CODE_MESSAGE_OUTSIDE_OF_ELIGIBILITY_WINDOW — what do I do?
I'm getting ERROR_CODE_MESSAGE_OUTSIDE_OF_ELIGIBILITY_WINDOW — what do I do?
I'm within the 24-hour window but still getting the eligibility error.
I'm within the 24-hour window but still getting the eligibility error.
sender explicitly in your request:How do I send from a specific number when I have multiple?
How do I send from a specific number when I have multiple?
sender object in your request body with your chosen phone number in E.164 format. This works on both the session message and template message endpoints:Session message:My template message is failing when I send to a business WhatsApp number.
My template message is failing when I send to a business WhatsApp number.
How do I track which webhook event belongs to which message I sent?
How do I track which webhook event belongs to which message I sent?
callbackData field when sending a message. Set it to any JSON value up to 1024 bytes (e.g. { "order_id": "12345" }) and Connectly echoes it back in every related webhook event — delivery status updates and inbound replies that reference the message.Alternatively, save the id returned in the send response and match it against statusUpdate.id in delivery status webhook events.Templates
How long does template approval take?
How long does template approval take?
MESSAGE_TEMPLATE_STATUS_PENDING and transitions to approved or rejected.My template was rejected — what do I do?
My template was rejected — what do I do?
rejectionReason field in the Get templates response. Common reasons include:INVALID_FORMAT— the template structure doesn’t meet Meta’s guidelines. Review Meta’s Message Template Guidelines.- Variables not numbered sequentially (e.g. using
{{1}}and{{3}}without{{2}}). - Shortened URLs (e.g. bit.ly) in button fields — use the full URL.
- Content that violates WhatsApp’s commerce or messaging policies.
Can I edit an existing template?
Can I edit an existing template?
Why is messagesLimitTier showing as UNSPECIFIED?
Why is messagesLimitTier showing as UNSPECIFIED?
WHATS_APP_MESSAGE_LIMIT_TIER_UNSPECIFIED is expected for new accounts or accounts whose tier hasn’t changed since setup. The field only updates when Meta registers a tier change. This is not an error — your account can still send messages. Check Get quality signals again after sending your first batch of campaigns.Webhooks
How do I verify that a webhook payload came from Connectly?
How do I verify that a webhook payload came from Connectly?
x-connectly-hmac-sha256 header — a Base64-encoded HMAC-SHA256 digest of the raw request body, signed with your webhook secret. Verify it before processing:callbackData isn't appearing on some inbound replies — why?
callbackData isn't appearing on some inbound replies — why?
callbackData is only echoed back on webhook events that are directly linked to the original outbound message:- Delivery status events (
sent,delivered,read,delivery_failed) — always included. - Inbound replies that quote the original message — button replies, list replies, quoted media, reactions.
callbackData — WhatsApp provides no server-side signal linking them to a specific outbound message.Connectly isn't delivering events to my webhook endpoint — what should I check?
Connectly isn't delivering events to my webhook endpoint — what should I check?
- Your endpoint must be publicly accessible over HTTPS. Plain HTTP endpoints are not supported.
- Your endpoint must return a
2xxresponse within a reasonable timeout. Connectly treats non-2xx responses as failures. - Confirm your webhook registration is active using Get webhooks.
- Check that you registered for the correct topic (
messagesfor inbound,delivery_statusfor outbound delivery events).
Campaigns
I'm getting a 409 error when triggering a campaign sendout — what does it mean?
I'm getting a 409 error when triggering a campaign sendout — what does it mean?
409 means the campaign is not in a state that accepts sendouts — typically because it hasn’t been published yet. Go to the Connectly Flow Builder, finalize and publish the campaign, then retry the API call.Can I send the same campaign to the same customer more than once?
Can I send the same campaign to the same customer more than once?
options.if_duplicate_check_unspecified to "allow_multiple" in your request:How do I find my campaignName to use in the API?
How do I find my campaignName to use in the API?
Account & general
Where do I find my business ID?
Where do I find my business ID?
/v1/businesses/{businessId}/....My API key stopped working — what do I do?
My API key stopped working — what do I do?
I'm hitting rate limits — what are they?
I'm hitting rate limits — what are they?
429 Too Many Requests. Implement exponential backoff in your client if you expect sustained high volume.Can't figure it out?
Can't figure it out?
cntTraceId from any error responses — it’s the fastest way for our team to diagnose the issue.