Skip to main content

How to use the Card Template action

Send rich interactive cards in DMs: images, a title, up to three buttons, web links, and click tracking.

The Card Template action sends visually rich, interactive cards in Instagram DMs. Each card can have an image, a title, a subtitle, and up to three buttons, giving your contacts a clear, tappable way to take action.

⚠️ Card Template is an advanced, developer-focused action. In the visual builder it's only visible to developer organizations, but anyone on a Pro or Trial plan can add it through the API or MCP. If you don't see it in the step picker, build it programmatically (see below).

What it does

A card template sends one or more cards in a single DM. Each card has:

  • Image: upload one, or let Inrō fetch it from a URL using OpenGraph.

  • Title and subtitle: short text describing the card.

  • Buttons (up to 3 per card), each one either:

    • Postback: triggers a branch in your scenario when tapped.

    • Web URL: opens an external link in the contact's browser.

How to set it up (visual builder)

  1. In your scenario, add a Card Template action.

  2. Click a card to open its edit panel.

  3. Fill in the title, subtitle, and image (upload, or enable Fetch from URL for automatic OpenGraph detection).

  4. Add up to 3 buttons per card. For each, choose the type: - Postback: enter a label; Inrō generates the payload. - Web URL: enter a label and the destination URL.

  5. Repeat for each card.

  6. Save the action. Your scenario branches are created automatically from your buttons.

Build it via the API

Add a card_template action to your scenario JSON (see Build and Update Automations Programmatically via API & MCP). Each card takes a title, an optional subtitle, an image (image_url to fetch one, or media_file_id for an uploaded file), and a buttons array. Each button is either a postback ({ "title": "...", "payload": "..." }) or a web link ({ "title": "...", "type": "web_url", "url": "..." }).

Call get_action_types for the exact option schema before you build. The action branches on button taps, so wire your follow-up steps to the branches below.

Click tracking and branches

Inrō creates a scenario branch for each postback button, so you can route contacts by what they tap. You choose how clicks are counted:

  • Single click (default): one branch fires for any button tapped on a card. Best for simple yes/no choices. Over the API this is the single option_0 branch.

  • Multiple clicks: each postback button gets its own branch (option_0, option_1, and so on), so a contact can tap several and trigger multiple paths. Turn this on per card or for the whole action.

An expired branch (option_expired) is also created automatically, for when the card's interaction window passes.

Using variables in cards

After a contact taps a postback button, you can use these variables in later steps:

  • {{ button.label }}: the label of the button they tapped.

  • {{ button.payload }}: the internal payload value.

  • {{ button.card_title }}: the title of the card they tapped.

🐾 Netsuke's Tips

  • Use Web URL buttons for external links: they open a browser straight away, so they're ideal for sending contacts to your site, a product page, or a booking link.

  • Turn on OpenGraph fetch when your image URL comes from a web page. Inrō pulls the preview image automatically, so you don't have to upload one per card.

What's next?

Did this answer your question?