Prerequisite You need an admin or owner role in your Growi organization and a full-access API key.
Overview
If your store doesn’t run on Shopify, creators can still request free samples in Growi. Instead of Growi placing a Shopify order, Growi sends each request to you with the creator, the product and the shipping address, and you create the order in your own system. You can receive requests in two ways:- Webhooks: Growi POSTs a
sample_request.*event to your webhook URL as soon as something happens. - API: you list sample requests, approve or reject them, and report shipments.
How it works
- You choose which products creators can request in your campaign.
- A creator in the campaign opens the Sample Request tab, picks a product and confirms their shipping address.
- Growi sends
sample_request.created. - The request is approved, either automatically (when the campaign auto-approves samples) or by you through the API. Growi sends
sample_request.approved. - You create the order on your side and ship it.
- You report the shipment (order number and tracking link) through the API. Growi sends
sample_request.shipped.
Set up
1
Create a campaign with Custom website
In the Growi dashboard, open Campaigns, click Add campaign and choose General. On the Store and duration step, tick Custom website.
2
Choose sample products
On the Details and advanced step, open the Free Samples & Store section, the one with Offer free samples, and click Configure. Under Sample products, click Add sample product and add the products you ship from your own store: a name, your SKU, an image (paste a URL or upload one) and, optionally, variants such as sizes or ratings, each with its own SKU. Then check the products, and the variants, creators can request in this campaign. Turn on Offer free samples, pick Auto Approve Requests if every request should be approved right away, and click Save. Sample products are saved on your organization, so you can reuse them in other campaigns. Products synced from TikTok Shop or Amazon aren’t offered here, because their ids and SKUs wouldn’t match your orders.
3
Add your webhook URL
Open Settings → Webhooks and add an HTTPS URL. Every active URL receives every event, including the campaign creator events.
4
Get an API key
Open Settings → Developer → API keys and create a full-access key. Read-only keys can list requests but can’t approve or update them.
Webhook events
Delivery works like the other Growi webhooks: an HTTPS
POST with a JSON body, signed with Authorization: Bearer <your newest growi-sk API key>, retried up to 3 times on a non-2xx response. Delivery is at-least-once, so deduplicate on idempotency_key.
quantity is the number of units to ship for the variant.
The product and variant are the sample products you added in Growi, so you can map them to your own catalog:
shopify_id, tik_tok_id and amazon_product_id are null for your sample products.
sample_request always reflects the request as it is when the event is delivered, so a sample_request.created event can already show "status": "approved" when the campaign auto-approves.
Example payload
Creators who joined through the Growi marketplace keep their contact details private until you approve their request. For those creators,
email, phone, last_name and shipping_address are null while the request is pending, and are filled in once it’s approved.Statuses
Use the API
All examples use the base URLhttps://api.growi.io/api/public/v1.
List pending requests
updated_since with the time of your last sync:
Approve or reject
Report the shipment
"status": "delivered" once the package arrives. You can also send order_id, order_name or tracking_url without a status to update them on their own.
Limits
- API requests count toward your hourly limit, with at least 2 seconds between requests. Use webhooks to avoid polling often.
- Requests are listed for your organization’s campaigns and your child brands’ campaigns.
- Only samples fulfilled by you appear here. Samples on Shopify stores are still sent as Shopify orders, and TikTok Shop samples stay in TikTok Shop.