Skip to content

Product Template for Instagram Messaging

Updated: Jun 30, 2026

Send Instagram messages with product information that you have uploaded to your product catalog⁠ using the product template. The product template automatically pulls product details (image, title, price) from the product catalog.

You can create messages that have one product or a horizontally scrollable carousel of products using the product template.

Single product card showing a travel bag photo with title 'Travel Bag' and price 49.90Scrollable carousel of product cards with photos, titles, and a 'Schedule now' button

Before you start

You will need:

  • The ID, or IDs, for the product from your Facebook catalog – You can get IDs from Catalog API or Commerce Manager⁠.
  • A Page Access Token from the Page that owns the products in the catalog
  • Meta Webhooks for Instagram Messaging subscriptions
  • The ID for your Instagram Professional account
  • The ID for the Page linked to your Instagram Professional account
  • The Instagram Scoped ID for the person to whom you are sending the message

Send a product message

To send a product message to a person, send a POST request to the /PAGE-ID/messages endpoint with the recipient.id property set to the Instagram-scoped ID of the person receiving the message. Include the type and payload properties in the message.attachment object. Set type to template and set the payload.template_type property to product and payload.elements to a list of product ID key-value pairs.

curl -X POST -H "Content-Type: application/json" -d '{  
  "recipient":{  
    "id":"INSTAGRAM-SCOPED-ID"  
  },  
  "message":{  
    "attachment":{  
      "type":"template",  
      "payload": {  
        "template_type": "product",  
        "elements": [  
          {  
            "id": "PRODUCT-ID"  
          }  
        ]  
      }  
    }  
  }  
}' "https://graph.facebook.com/LATEST-GRAPH-API-VERSION/PAGE-ID/messages?access_token=PAGE-ACCESS-TOKEN"

To send a product carousel, add more product key-value pairs to the payload.elements property. You can include up to 10 products in your request.

...  
      "payload": {  
        "template_type": "product",  
        "elements": [  
          {  
            "id": "PRODUCT-ID-1"  
          },  
          {  
            "id": "PRODUCT-ID-2"  
          },  
          {  
            "id": "PRODUCT-ID-3"  
          }  
        ]  
      }  
...

On success your app will receive the following JSON object with the recipient ID and the message ID.

{
  "recipient_id": "1254477777772919",
  "message_id": "AG5Hz2Uq7tuwNEhXfYYKj8mJEM_QPpz5jdCK48PnKAjSdjfipqxqMvK8ma6AC8fplwlqLP_5cgXIbu7I3rBN0P"
}

Send an opt-in request

To send an opt-in request to a person to receive recurring marketing messages, send a POST request to /PAGE-ID/messages endpoint with the recipient.id property set to the Instagram-scoped ID of the person receiving the message. In the message attachment.payload property set template_type to notification_messages. In the payload.elements property include the image_url, title, payload, notification_messages_frequency, and notification_messages_cta_text.

curl -X POST -H "Content-Type:application/json" -d '{  
  "recipient": {  
    "id": "INSTAGRAM-SCOPED-ID"  
  },  
  "message": {  
    "attachment": {  
      "type": "template",  
      "payload": {  
        "template_type": "notification_messages",  
        "elements": [  
          {  
            "image_url": "IMAGE-URL",  
            "title": "TEXT-TO-DISPLAY",  
            "payload": "INFORMATION-ABOUT-THIS-MESSAGE",  
            "notification_messages_frequency": "DAILY",  
            "notification_messages_cta_text": "GET_UPDATES"  
          }  
        ]  
      }  
    }  
  }  
}' "https://graph.intern.facebook.com/LATEST-GRAPH-API-VERSION/PAGE-ID/messages?access_token=PAGE-ACCESS-TOKEN"

Properties

PropertyValue
image_url stringThe URL for the image to display in the template
notification_messages_cta_text enum { ALLOW, FREQUENCY, GET, GET_UPDATES, OPT_IN, SIGN_UP }Set the call-to-action button text using one of the following values: * ALLOW – set opt-in message button text to Allow messages * FREQUENCY – set opt-in message button text to Get daily messages * GET – set opt-in message button text to Get messages * GET_UPDATES – set opt-in message button text to Get updates, this is also default if notification_messages_cta_text is not set * OPT_IN – set opt-in message button text to Opt in to messages * SIGN_UP – set opt-in message button text to Sign up for messages
notification_messages_frequency enum { DAILY, WEEKLY, MONTHLY }Message frequency for this recurring notification opt-in request. * DAILY – Opt in to receive one notification per 24 hour period for 6 months * WEEKLY – Opt in to receive one notification per 7 day period for 9 months * MONTHLY – Opt in to receive one notification per 1 month period for 12 months
payload stringThe type of recurring notification, such as promotional messaging or product release messaging, for this recurring notification opt-in request
title stringThe title to display in the template, cannot exceed 65 characters. If no value is assigned, the value defaults to "Updates and promotions"

Next steps

Now that people have opted in to receive recurring marketing messages, learn how to send your marketing messages.

See also

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About