ESP Integration Guide for Hello Retail Product Agents¶
This document describes the requirements for Email Service Providers (ESPs) to integrate with Hello Retail's Product Agents messaging system.
Overview¶
Hello Retail's Product Agents generate personalized marketing messages for e-commerce customers. When a message is ready to send, we push it to your platform via HTTP API. Your platform is responsible for rendering the message content into an email template and delivering it to the recipient.
Customer Setup Flow¶
- Your customer (the merchant) generates an API key in your platform
- The merchant adds this API key to their Hello Retail account configuration
- Hello Retail uses this API key when making requests to your platform on behalf of that merchant
Integration Requirements¶
You need to provide two API endpoints:
1. Send Message API¶
Receives message content from Hello Retail and delivers it to the recipient.
Method: POST
Headers:
Request Body: See Message Payload Format below.
Expected Response:
Success (2xx):
Error (4xx/5xx):
2. Permission Check API¶
Verifies whether we are allowed to send messages to a specific recipient. This check happens before we generate the message content, saving computational resources if the recipient cannot receive messages.
Method: GET or POST
Parameters: - email - The recipient's email address
Headers:
Expected Response:
Can send:
Cannot send:
Configuration¶
Please provide Hello Retail with:
| Setting | Description |
|---|---|
sendMessageUrl | Full URL for the Send Message API |
permissionCheckUrl | Full URL for the Permission Check API |
authScheme | How to send the API key in the Authorization header |
Message Payload Format¶
The payload contains AI-generated email content and product data. All fields should be made available in your template rendering context.
{
"subject": "...",
"previewText": "...",
"headline": "...",
"body": "...",
"callToAction": "...",
"otherProductsTitle": "...",
"otherProductsText": "...",
"otherProductsCallToAction": "...",
"messageType": "REPLENISHMENT_REMINDER",
"recipient": {
"email": "customer@example.com"
},
"language": "en",
"website": "https://shop.example.com",
"inputProduct": { ... },
"primaryProducts": [ ... ],
"otherProducts": [ ... ]
}
Content Fields¶
| Field | Type | Description |
|---|---|---|
subject | string | Email subject line |
previewText | string | Email preview text (shown in inbox) |
headline | string | Main headline inside the email |
body | string | Main email body (may contain simple HTML: <b>, <em>, <ul>, <li>) |
callToAction | string | Text for the primary CTA button |
otherProductsTitle | string | Header for the recommended products section |
otherProductsText | string | Description for the recommended products section |
otherProductsCallToAction | string | Text for the secondary CTA |
Metadata Fields¶
| Field | Type | Description |
|---|---|---|
messageType | string | One of: REPLENISHMENT_REMINDER, SIMILAR_PRODUCT_RECOMMENDATIONS, ACCESSORY_RELATED_PRODUCT_UPSELL, PRICE_DROP_VIEWED_PRODUCT, PRICE_DROP_PURCHASED_REPLENISHMENT, PRICE_DROP_ALTERNATIVE_PRODUCT |
recipient | object | Contains email field with recipient's email address |
language | string | Language code (e.g., "en", "da", "de") |
website | string | The merchant's website URL |
Product Fields¶
inputProduct is the product that triggered the message (what the customer previously bought or viewed).
primaryProducts is an array containing the featured product(s).
otherProducts is an array of recommended products (0-6 products).
Each product object contains:
| Field | Type | Description |
|---|---|---|
title | string | Product name |
description | string | Product description |
imgUrl | string | Direct URL to product image |
image.url | string | Direct URL to product image |
image.scalableUrl | string | Hello Retail CDN URL supporting dynamic resize via query params |
url | string | Product page URL |
price | number | Current price |
oldPrice | number | null | Previous price if on sale |
currency | string | Currency code (e.g., "EUR", "USD") |
onSale | boolean | Whether the product is on sale |