Affiliate program: Instacart - Waiviogit/waivio GitHub Wiki

Instacart Button Integration (Impact)

The Instacart Button integration enables users to add recipe ingredients to their Instacart cart directly from a recipe page. This implementation follows Instacart’s official guidelines and uses Impact for affiliate tracking.

The integration is based on a link-driven approach rather than the legacy Taskmaster setup.

Overview

  • The Instacart button is implemented as a link, styled according to official Instacart button guidelines.
  • The link is requested when a user opens a recipe page.
  • Link generation and caching are handled by the backend.
  • The existing Recipe schema continues to be used to describe ingredients.
  • AI-based processing is applied during link creation to improve data quality and formatting.

Implementation Details

1. Recipe Schema

The integration relies on the existing Schema.org Recipe markup.

Required fields:

  • name — Recipe title.
  • recipeIngredient — List of ingredients, sourced from the internal recipe data.
  • recipeInstructions — Preparation steps, sourced from the 1st post content.

This schema is used to construct the Instacart recipe link according to Instacart’s official rules.

2. Instacart Button Behavior

  • The button is rendered as a link-based Instacart button view, compliant with official design and usage guidelines.
  • Clicking the button redirects the user to Instacart with the recipe ingredients prefilled.

When the backend specifies "type": "instacart" along with an ID, an Instacart button is added to the recipe page. The Instacart ID received from the backend ensures user-specific tracking, and users can add their affiliate code via the Affiliate Codes tab in the personal section, site settings, or through the Instacart affiliate object on Waivio.

  • Button Placement:
    • Right Column (next to the avatar) for social sites.
    • Object header for Waivio.
    • Posts (modal window and full-screen view). Ingredients are taken from the linked recipe object.

3. Backend Link Generation & Caching

When a recipe page is opened:

  1. The frontend requests an Instacart link from the backend.
  2. The backend checks whether a cached Instacart link already exists for the recipe.
  • If a cached version exists → the cached link is returned.
  • If no cached version exists → the backend generates a new Instacart link following:
    • Collects ingredients from the recipe object
    • Collects preparation steps from the linked post
    • Applies AI-based normalization and formatting
    • Generates the Instacart link according to official documentation and Impact rules
  1. The generated link is cached and returned to the frontend.

This approach reduces repeated link generation and ensures consistent affiliate tracking.

4. Affiliate Tracking (Impact)

  • Affiliate attribution is handled via Impact.
  • All Instacart links are generated in compliance with Impact tracking requirements.
  • No user-side configuration is required for affiliate tracking.

Notes

  • This integration applies only to recipe objects.
  • The legacy Taskmaster-based Instacart integration is no longer used.
  • The frontend does not construct Instacart links manually; it only renders links received from the backend.

Additional information

  • Details information from back-end
  • [affiliate / instacart] this grocery delivery service offers recipe integration. It seems that there is a way to insert a button and they themselves analyze the page and create a basket with ingredients (details in comments). #6901
  • [post / instacart] Add instacart button to posts (modal view and full-screen) on Waivio and social sites. #7018
  • [Instacart / IDP] Instacart is changing its affiliate program from Tastemakers to IDP / Impact. Some of the participants have received notifications, but in general, access to Tastemakers statistics is still preserved. IDP has a public API. #7504
  • [affiliate / instacart] Instacart is changing its affiliate program from Tastemakers to IDP / Impact. #7523
  • [instacart / impact] Redesign the “New” Instacart button based on the official guidelines. #8082
  • [instacart / mobile] Clicking the Instacart button doesn't work on mobile devices. #8104
  • [instacart / preparation] Now that we're processing the ingredient list with AI before moving it to Instacart, you can try taking both the ingredients and the Preparation from the recipe post. #8113
  • [instacart / items] Many ingredients are currently not recognized when generating an order through Instacart. #8102
  • [instacart / API] initiate the process of testing and obtaining production API codes from Instacart so that Waivio customers can run integrations with the Instacart Affiliate Program (via Impact) #8075
  • [social.gifts / instacart] The site settings have a custom Instacart code, but the link to Instacart still uses the old (default) one. #8192
  • If a user has a personal Instacart affiliate code but not one for sites, the system should also use this personal code for sites. #8193
  • [social.gifts / instacart] If there are two identical product IDs (in this case, Instacart), there should be only one button. Multiple buttons are possible if the product IDs have different names. #8136
  • [instacart / region] If a user from Canada clicks the Instacart button, the link should direct them to the Canadian domain (.ca). #8222