Skip to main content
A CTA URL button message shows a single tappable button that opens a URL in the phone’s browser when tapped. Unlike reply buttons (which send data back to your server), a CTA button just opens a link. Use it for “Pay Now”, “Track Order”, “Visit Website”, or any action that takes the customer to a webpage.

Sending a CTA URL button

{
  "messaging_product": "whatsapp",
  "to": "919959623255",
  "type": "interactive",
  "interactive": {
    "type": "cta_url",
    "header": {
      "type": "text",
      "text": "Your order is ready!"
    },
    "body": {
      "text": "Click below to complete your payment."
    },
    "footer": {
      "text": "Secure payment powered by Razorpay"
    },
    "action": {
      "name": "cta_url",
      "parameters": {
        "display_text": "Pay Now",
        "url": "https://yourstore.com/pay/order-1023"
      }
    }
  }
}

Fields

FieldRequiredDescription
action.nameyesAlways "cta_url"
action.parameters.display_textyesButton label (max 20 characters)
action.parameters.urlyesThe URL that opens when tapped
headernoOptional — supports text, image, video, document
footernoOptional text below the button

Real-world use cases

  • Pay Now → links to a payment gateway
  • Track Order → links to a shipment tracking page
  • View Invoice → links to a hosted PDF or invoice page
  • Book Appointment → links to a booking form

Frequently asked

A CTA button opens a URL in the browser — nothing comes back to your server. A reply button sends the button’s id to your webhook when tapped. Use CTA for links; use reply buttons for bot interactions.
Yes. Add a header object with "type": "image" and the image URL.
Only one per message. For multiple links, use a list message or send the links in the body text.

Gotchas & common mistakes

  • action.name must be "cta_url" — this is a required field, not just a description. Missing it causes an error.
  • Only one button — CTA URL messages support a single button. You cannot add multiple URL buttons in one message.
  • display_text over 20 characters — keep button labels short.
  • Non-HTTPS URL — the URL must use https://. Plain http:// is rejected.