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:
- The frontend requests an Instacart link from the backend.
- 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
- 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