
Shopify & Feedback Company
Shopify Integratie met Feedback Company
Automatische review uitnodigingen
Admin dashboard voor monitoring
โ๏ธ Project Doel & Samenvatting
Dit project is een volledig custom integratie tussen Shopify en Feedback Company, ontworpen om het reviewproces voor klanten volledig te automatiseren. Er was geen officiรซle plugin beschikbaar, dus dit is gebouwd met Shopify webhooks, Feedback Company API, en Firebase Cloud Functions als backend.
๐ก Technische Hoogtepunten
- Volledig serverless backend op Firebase Cloud Functions
- Shopify webhook listener voor order events
- Automatische review uitnodigingen via Feedback Company API
- Multi-region support (NL/BE, DE/AT, EN) met eigen tokens
- Automatische access token refresh & caching
- Admin panel voor het opnieuw versturen van mislukte verzoeken
๐ Wat maakt deze integratie uniek?
- Enterprise-grade beveiliging met HMAC webhook validatie
- Volledige audit trail en logging in Firestore
- Retry-mechanisme voor mislukte verzoeken
- Automatische multi-region tokenbeheer
- Schaalbare, volledig geautomatiseerde architectuur zonder handmatige interventie
๐งโ๐ป Codevoorbeelden die complexiteit tonen
1. Webhook HMAC Validatie (Shopify Security)
Webhook HMAC Validatie
const secret = process.env.SHOPIFY_WEBHOOK_SECRET;
const hash = crypto.createHmac('SHA256', secret).update(req.rawBody, 'utf8').digest('base64');
if (hash !== req.headers["x-shopify-hmac-sha256"]) res.status(403).end();
2. Multi-Region Token Management (Per Land Access Tokens)
Multi-Region Token Management
const country_code = req.body.customer.default_address.country_code;
let fc_accesstoken = "";
switch (country_code) {
case "NL":
case "BE":
fc_accesstoken = (await db.collection("access_tokens").doc("access_token_nl").get()).data().access_token;
break;
case "DE":
case "AT":
fc_accesstoken = (await db.collection("access_tokens").doc("access_token_de").get()).data().access_token;
break;
default:
fc_accesstoken = (await db.collection("access_tokens").doc("access_token_en").get()).data().access_token;
}
3. Retry Mechanisme via Admin API
Retry Mechanisme via Admin API
exports.admin_retry_fc_request = functions.https.onRequest(async (req, res) => {
res.set('Access-Control-Allow-Origin', '*');
if (req.body["admin-api-key"] !== process.env.ADMIN_API_KEY) return res.status(400).send("Invalid API key").end();
// Retry logic...
});
4. Review uitnodiging opzetten met delays en reminders
Review uitnodiging met delays en reminders
let fc_request_body = {
"external_id": req.headers["x-shopify-webhook-id"],
"customer": { "email": req.body.customer.email },
"invitation": {
"delay": { "unit": "days", "amount": 4 },
"reminder": { "unit": "days", "amount": 6 }
}
}
๐ฏ Doelgroepen die hier veel aan hebben
- Enterprise e-commerce bedrijven: Volledig geautomatiseerde reviewflow, multi-region compliant.
- High-volume Shopify Stores: Reviewbeheer zonder handmatige acties, schaalbaar.
- Internationale merken: Taal- en regioafhankelijke uitnodigingen.
- Digital agencies: Oplossing herbruikbaar voor klanten (white-label mogelijk).
- SaaS/API-platforms: Voorbeeld van veilige, schaalbare API-koppeling.
๐ฅ Unieke business en technische voordelen
โ๏ธ Business Value
- Automatisering reviewflows
- Betrouwbaar en consistent proces
- Hogere klanttevredenheid en conversie
- Klaar voor internationale expansie
๐ ๏ธ Developer Value
- Schaalbare backend zonder beheer
- Enterprise security met HMAC, tokens
- Volledig gelogd en inzichtelijk
- Herbruikbare, modulaire architectuur
Stack highlights
ShopifyFeedback Company APIFirebaseCloud FunctionsFirestoreNode.jsWebhooksHMACOAuthServerless
๐ Interesse in een soortgelijke API-integratie of automatisering voor uw e-commerce platform? Neem contact op!