Documentation Index
Fetch the complete documentation index at: https://docs.withflock.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Node.js SDK enables seamless integration of Flock referral and rewards into your backend services. Effortlessly build powerful referral programs, track customer engagement, and manage rewards programmatically.
- Identify and manage customers
- Ingest checkpoints to trigger rewards at key milestones
- Webhook event verification
- Fetch live campaigns
- Create and manage referrals
- Officially supported by the Flock team
Installation
Install the SDK using npm or yarn:
# Using npm
npm install @wflock/node-flock
# Using yarn
yarn add @wflock/node-flock
Quick Start
Initialize the SDK
import { FlockSDK } from '@wflock/node-flock';
// Initialize with your service access key
const sdk = new FlockSDK({
accessKey: 'your-service-access-key', // Get this from the Flock dashboard
});
Your service access key should be kept secure and never exposed in client-side code. This SDK is designed for server-side use only.
Core Features
1. Ingest Checkpoints
Trigger checkpoints to record key milestones in your user journey and/or trigger rewards. See Checkpoints for more details.
// Ingest a checkpoint
await sdk.checkpoints.ingest('purchase_completed', {
externalUserId: 'user_123', // The user ID in your system
environment: 'production', // or 'test'
});
2. Customer Management
Identify customers
// Identify a customer
const customer = await sdk.customers.identify({
externalUserId: 'external_user_123', // The user ID in your system
email: 'user@example.com',
name: 'Jane Doe',
customProperties: { // Optional custom properties
plan: 'premium',
signupDate: '2025-01-15'
}
});
Checkpoints are the recommended way to trigger rewards. Configure which checkpoints trigger rewards in the Flock dashboard.
3. Campaign Management
Fetch live campaign details.
// Get live campaign for an environment
const campaign = await sdk.campaigns.getLive({
environment: 'production', // or 'test'
customerId: 'customer_123' // This is Flock internal ID that you get after calling the identify method
});
4. Referral Management
Sometimes, you may want to validate and create a referral from your backend.
// Validate a referral code
const validation = await sdk.referrals.validate('JANE123');
if (validation.isValid) {
console.log('Valid referral code from:', validation.referredBy);
// Create a referral
const referral = await sdk.referrals.create({
campaignId: 'campaign_123',
referralCode: 'JANE123',
refereeId: 'customer_123' // This is Flock internal ID that you get after calling the identify method
});
}
5. Webhook Verification
Verify webhook events sent from Flock to ensure they are legitimate and secure:
// Express.js route handler example
app.post('/webhooks/flock', (req, res) => {
try {
// Get the signature from the headers
const signature = req.headers['x-flock-signature'];
if (!signature) {
return res.status(401).json({ error: 'Missing signature header' });
}
// Validate and construct the webhook event
const event = sdk.webhooks.constructEvent({
secret: 'your_webhook_secret', // Get this from the Flock dashboard
signature,
payload: req.body,
maxAge: 5 * 60 * 1000, // Optional: 5 minutes in milliseconds
});
// Handle the event based on its type
switch (event.name) {
case 'invitee.accepted':
console.log(`Invitee ${event.data.invitee.id} accepted an invitation`);
// Process the event...
break;
// Handle other event types...
default:
console.log(`Received unknown event type: ${event.name}`);
}
res.status(200).json({ received: true });
} catch (error) {
console.error('Webhook error:', error.message);
return res.status(400).json({ error: error.message });
}
});
6. Direct reward trigger (not recommended)
Direct reward triggering should only be used when checkpoint-based rewards don’t meet your needs. For most use cases, ingesting checkpoints is the recommended approach.
Trigger rewards programmatically:
// Trigger a reward
await sdk.rewards.trigger({
externalUserId: 'user_123',
environment: 'production', // or 'test'
rewardFor: ['self', 'referral_partner'] // Who should receive the reward
});
Best Practices
- Keep your access key secure - Never expose it in client-side code
- Identify users early - Call
identify() before other operations
- Use checkpoints for rewards - Configure reward triggers in the dashboard
Support