Skip to main content

Automation Platform Integration

Connect Loyalteez to automation platforms like Zapier, Make, IFTTT, n8n, and Pipedream for no-code reward distribution.

Overview

This guide covers platform-specific integration details. For comprehensive automation patterns and workflows, see the Automation Guide.

Supported Platforms

PlatformTypeDifficultyBest For
ZapierCloudEasyBusiness users, quick setup
MakeCloudEasyVisual workflows, complex logic
IFTTTCloudVery EasySimple triggers, social media
n8nSelf-hostedMediumPrivacy, custom hosting
PipedreamCloudMediumDevelopers, serverless

Platform Integrations

Zapier

Setup:

  1. Trigger: Choose app (e.g., "New Email in Gmail")
  2. Action: "Webhooks by Zapier" → "POST"
  3. URL: https://api.loyalteez.app/loyalteez-api/manual-event
  4. Payload Type: JSON
  5. Data: See Automation Guide

Templates:

  • Newsletter signup rewards
  • E-commerce purchase rewards
  • CRM activity rewards
  • Form submission rewards

Make (Integromat)

Setup:

  1. Add "HTTP" module
  2. Method: "Make a request"
  3. URL: https://api.loyalteez.app/loyalteez-api/manual-event
  4. Method: POST
  5. Body type: Raw
  6. Content type: JSON

Use Cases:

  • Multi-step workflows
  • Conditional rewards
  • Data transformation
  • Error handling

IFTTT

Setup:

  1. Choose trigger service
  2. Action: "Webhooks" → "Make a web request"
  3. URL: https://api.loyalteez.app/loyalteez-api/manual-event
  4. Method: POST
  5. Content Type: application/json

Best For:

  • Social media triggers
  • IoT device triggers
  • Location-based rewards
  • Simple automations

n8n

Setup:

  1. Add "HTTP Request" node
  2. Method: POST
  3. URL: https://api.loyalteez.app/loyalteez-api/manual-event
  4. Authentication: None
  5. Send Body: Yes
  6. Body Content Type: JSON

Advantages:

  • Self-hosted (full control)
  • Open source
  • No vendor lock-in
  • Custom nodes

Pipedream

Setup:

export default defineComponent({
async run({ steps, $ }) {
await $.send.http({
method: 'POST',
url: 'https://api.loyalteez.app/loyalteez-api/manual-event',
headers: {
'Content-Type': 'application/json'
},
data: {
brandId: process.env.LOYALTEEZ_BRAND_ID,
eventType: steps.trigger.event.type,
userEmail: steps.trigger.event.user.email,
domain: 'yourdomain.com',
metadata: {
source: 'pipedream'
}
}
});
}
});

Advantages:

  • Serverless
  • Code + no-code
  • Built-in OAuth
  • Event sources

Request Format

All platforms use the same API format:

{
"brandId": "YOUR_BRAND_ID",
"eventType": "event_name",
"userEmail": "[email protected]",
"domain": "yourdomain.com",
"metadata": {
"source": "platform_name",
"custom_field": "value"
}
}

Common Integration Patterns

For detailed workflow examples, see the Automation Guide:

  • Email Marketing - Newsletter signup rewards
  • E-Commerce - Purchase and review rewards
  • CRM - Deal and activity rewards
  • Social Media - Content and engagement rewards
  • Project Management - Task completion rewards

Platform Comparison

FeatureZapierMakeIFTTTn8nPipedream
Price$$$$Free/$FreeFree/$
ComplexityLowMediumLowMediumHigh
HostingCloudCloudCloudSelfCloud
Code SupportLimitedLimitedNoYesYes
Error HandlingGoodGreatBasicGreatGreat
Rate LimitsPlan-basedPlan-basedLimitedNoneGenerous

Best Practices

1. Use Environment Variables

// Instead of hardcoding
const BRAND_ID = process.env.LOYALTEEZ_BRAND_ID;
const DOMAIN = process.env.DOMAIN;

2. Add Retry Logic

// Example for Pipedream
export default defineComponent({
async run({ steps, $ }) {
let attempts = 0;
const maxAttempts = 3;

while (attempts < maxAttempts) {
try {
await rewardUser(...);
break;
} catch (error) {
attempts++;
if (attempts === maxAttempts) throw error;
await $.sleep(1000 * attempts);
}
}
}
});

3. Validate Data

// Validate before sending
if (!email || !email.includes('@')) {
throw new Error('Invalid email');
}

if (!eventType || eventType.length > 50) {
throw new Error('Invalid event type');
}

4. Log Everything

// Track for debugging
console.log('Rewarding user:', { email, eventType, metadata });

// Log responses
console.log('API response:', response.data);

Troubleshooting

Connection Errors

Problem: "Failed to connect to API"

Solutions:

  1. Check API URL is correct
  2. Verify internet connectivity
  3. Check for firewall blocks
  4. Retry with exponential backoff

Authentication Errors

Problem: "Domain not authorized"

Solutions:

  1. Verify domain in Partner Portal settings
  2. Check domain format (no protocol/slash)
  3. Use exact domain from website_url

Rate Limit Errors

Problem: "Too many requests"

Solutions:

  1. Add delays between requests
  2. Implement queuing
  3. Contact support for limit increase

Next Steps

Support