generated: '2026-08-13' method: searched source: https://docs.getrepeat.io/en/articles/9395937-klaviyo-integration-overview docs: - https://docs.getrepeat.io/en/articles/9395937-klaviyo-integration-overview - https://docs.getrepeat.io/en/articles/8288408-due-to-replenish-events - https://docs.getrepeat.io/en/articles/8288625-late-due-to-replenish-events - https://docs.getrepeat.io/en/articles/8288657-primed-for-cross-sell-events - https://docs.getrepeat.io/en/articles/9039090-primed-for-subscription-events - https://docs.getrepeat.io/en/articles/8288719-about-to-lapse-events - https://docs.getrepeat.io/en/articles/8287666-klaviyo-profile-enrichment - https://getrepeat.io/integrations name: Repeat Integration Event Catalog transport: partner-platform note: >- This is an event catalog, NOT an AsyncAPI document and NOT a webhook surface. Repeat publishes no AsyncAPI, no CloudEvents schema, and no consumer-registered webhook endpoint. What it DOES publish — in detail, with named events and typed properties — is the set of lifecycle "Moment" events it pushes into a brand's own marketing platforms (Klaviyo, Attentive, Postscript, PostPilot) on the brand's behalf. A consumer subscribes to these by connecting the platform inside the Repeat Shopify app, not by standing up an HTTP endpoint, so no `Webhooks` pointer is emitted for them. The property tables below are transcribed from Repeat's own Help Center; nothing here is inferred. Every property is documented against the Klaviyo delivery; Repeat's docs state the same events are sent to the other connected platforms but only publish the field-level tables for Klaviyo. delivery: - platform: Klaviyo mechanism: >- Repeat writes events and customer profile properties into the brand's Klaviyo account. Consumed as flow triggers, segment conditions, and template variables. documented_fields: true docs: https://docs.getrepeat.io/en/articles/9395937-klaviyo-integration-overview - platform: Attentive mechanism: >- OAuth connection initiated from the Integrations tab of the Repeat Shopify app; events trigger Attentive journeys. documented_fields: false docs: https://docs.getrepeat.io/en/articles/9445073-setting-up-attentive-integration - platform: Postscript mechanism: Events trigger and personalize Postscript SMS flows. documented_fields: false docs: https://getrepeat.io/integrations - platform: PostPilot mechanism: Events trigger direct-mail (postcard) sends at a lifecycle Moment. documented_fields: false docs: https://getrepeat.io/integrations events: - name: Due to Replenish moment: replenishment description: >- Emitted when Repeat predicts a customer is running low on a previously purchased replenishable product, based on ingested Shopify order history and the typical replenishment interval for that product. docs: https://docs.getrepeat.io/en/articles/8288408-due-to-replenish-events properties: - name: Repeat Cart URL type: string description: URL of the customer's Personalized Cart. - name: Subscription Repeat Cart URL type: string description: URL of the Personalized Cart with subscription selected by default. - name: reorderableProducts type: array description: Products the customer is currently due to replenish. items_ref: ReorderableProduct - name: reorderable_product_ids type: array description: Shopify product IDs of the reorderable products. - name: reorderable_product_titles type: array description: Titles of the reorderable products. - name: Late Due to Replenish moment: replenishment description: >- Emitted when a customer has gone longer than the typical replenishment interval for a product without reordering — a product-specific winback signal. docs: https://docs.getrepeat.io/en/articles/8288625-late-due-to-replenish-events properties: - name: Repeat Cart URL type: string - name: Subscription Repeat Cart URL type: string - name: reorderableProducts type: array items_ref: ReorderableProduct - name: reorderable_product_ids type: array - name: reorderable_product_titles type: array - name: Primed for Cross-sell moment: cross-sell description: >- Emitted when Repeat's Product Predictions identify products a customer has not yet tried and is most likely to buy next. Requires Product Predictions to be activated under Moments > Cross Sell in the Repeat Shopify app. docs: https://docs.getrepeat.io/en/articles/8288657-primed-for-cross-sell-events properties: - name: Repeat Cart URL type: string - name: Subscription Repeat Cart URL type: string - name: productPredictions type: array description: Products the customer is likely to buy next. items_ref: ReorderableProduct - name: previouslyPurchased type: array description: Products the customer has purchased before; same shape as productPredictions. items_ref: ReorderableProduct - name: product_predictions_product_ids type: array - name: product_predictions_product_titles type: array - name: product_predictions_variant_ids type: array - name: Primed for Subscription moment: subscription-upsell description: >- Emitted when a customer's purchase frequency and cadence signal readiness to convert to a subscription for a specific product. docs: https://docs.getrepeat.io/en/articles/9039090-primed-for-subscription-events properties: - name: Repeat Cart URL type: string - name: Subscription Repeat Cart URL type: string - name: upsellProduct type: object description: >- The single product for which the customer is a subscription candidate. Unlike the other Moments this carries one product, not a list. items_ref: ReorderableProduct - name: upsell_product_ids type: array - name: upsell_product_titles type: array - name: About to Lapse moment: about-to-lapse description: >- Emitted when Repeat's churn-risk assessment puts a customer near — but not yet past — the point of permanent lapse. docs: https://docs.getrepeat.io/en/articles/8288719-about-to-lapse-events properties: - name: Repeat Cart URL type: string - name: Subscription Repeat Cart URL type: string - name: previouslyPurchased type: array description: Products the customer has bought before. items_ref: ReorderableProduct shared_shapes: - name: ReorderableProduct description: >- The common product envelope carried by every Moment event. Nested under a `product` key, with Shopify identifiers passed through unchanged. fields: - name: product.id type: number description: Shopify product ID. - name: product.title type: string - name: product.price type: string description: Price as a decimal string, e.g. "24.00". - name: product.subscription_price type: string description: >- Price when purchased on a subscription plan. Present only when the product has a subscription selling plan in Shopify. - name: product.handle type: string description: Shopify product handle used in the storefront URL. - name: product.images type: array description: Product images; `images.0.src` is the primary image URL. - name: product.variant.id type: number description: Shopify variant ID. - name: product.variant.title type: string profile_properties: docs: https://docs.getrepeat.io/en/articles/8287666-klaviyo-profile-enrichment description: >- Customer profile properties Repeat writes onto every Klaviyo profile, used for segmentation and show/hide personalization rather than as flow triggers. properties: - name: Repeat - Due To Replenish type: boolean description: True while the customer is inside an active replenishment window. - name: Repeat - Due To Replenish Products type: string description: >- A JSON array rendered as text, one object per product, with product_id, variant_id, product_title, variant_title, price_cents, subscription_price (when a subscription plan exists), image_url and pdp_url. - name: Repeat Cart URL type: string description: >- Unique Personalized Cart link. Added to every customer profile after their first purchase. - name: Subscription Repeat Cart URL type: string description: >- Personalized Cart link that defaults to "Subscribe & Save" for products with a Shopify subscription selling plan. summary: event_count: 5 platform_count: 4 asyncapi_document: false consumer_registered_webhooks: false field_tables_published_for: Klaviyo