Mailgun-kobling
Koblingsstatus: Planlagt Ikke bygget ennå. Tajo kjører ikke denne koblingen i dag.
Illustrasjon · eksempeldata
Eksempel på synkronisering
Kilde
Mailgun
Koblingsstatus: Planlagt
Mål
Det andre verktøyet ditt
Koblingsstatus: Eget verktøy
Feltkobling
| Kildefelt | Målfelt | Eksempelverdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Se gjennom én oppføring
- Godkjenn denne versjonen
Status gjelder hver enkelt kobling og garanterer ikke at denne synkroniseringen er klar. Feltene er illustrative. Kontroller faktisk skjema og tillatelser før synkroniseringen kjører.
Koble Mailgun til Brevo gjennom Tajo for å forene transaksjonelle og markedsføringsrelaterte e-postdata, synkronisere leveranshendelser og engasjementsmålinger og konsolidere e-postinfrastrukturen din til ett enkelt kundebilde.
Oversikt
| Egenskap | Verdi |
|---|---|
| Plattform | Mailgun (fra Sinch) |
| Kategori | E-postmarkedsføring |
| Oppsettskompleksitet | Enkel |
| Offisiell integrasjon | Nei |
| Synkroniserte data | Hendelser, kontakter, leveringskvalitet, kampanjer |
| Autentiseringsmetode | API-nøkkel (HTTP Basic Auth) |
Funksjoner
- Synkronisering av leveranshendelser - Spor levert, returnert, åpnet og klikket-hendelser
- Engasjementsmålinger - Synkroniser åpnings- og klikkrater til Brevo-kontaktattributter
- Returhåndtering - Undertrykk returnerte adresser i Brevo automatisk
- Klagehåndtering - Synkroniser spamklager for listehygiene
- Domenerenommé - Overvåk sendedomenets helse og leveringskvalitet
- Sporing av transaksjonell e-post - Korreler transaksjonelle sendinger med markedsføringsdata
Forutsetninger
Før du begynner, sørg for at du har:
- En Mailgun-konto med et verifisert sendedomene
- En Mailgun API-nøkkel fra Mailgun-dashbordet
- En Brevo-konto med API-tilgang
- En Tajo-konto med konnektor-rettigheter
Autentisering
API-nøkkelautentisering
Mailgun bruker HTTP Basic Authentication med api som brukernavn og API-nøkkelen din som passord:
# Hent API-nøkkelen din fra https://app.mailgun.com/settings/api_securityexport MAILGUN_API_KEY=key-your-api-keyexport MAILGUN_DOMAIN=your-domain.comexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// HTTP Basic Auth-formatconst headers = { 'Authorization': `Basic ${Buffer.from( `api:${process.env.MAILGUN_API_KEY}` ).toString('base64')}`};
// Eller med curl// curl -s --user 'api:YOUR_API_KEY' ...API-nøkkeltyper
Mailgun tilbyr domenespesifikke sendenøkler og API-nøkler på kontonivå. Bruk domene-sendenøkler for meldingsoperasjoner og konto-API-nøkkelen for administrasjonsoperasjoner.
Konfigurasjon
Grunnleggende oppsett
connectors: mailgun: enabled: true api_key: "${MAILGUN_API_KEY}" domain: "${MAILGUN_DOMAIN}" region: "us" # eller "eu" for EU-region
sync: events: true contacts: true bounces: true complaints: true schedule: "*/15 * * * *" # Hvert 15. minutt
webhook: signing_key: "${MAILGUN_WEBHOOK_SIGNING_KEY}"
lists: engaged: 30 bounced: 31 complained: 32Feltmapping
field_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME open_rate: MG_OPEN_RATE click_rate: MG_CLICK_RATE last_delivered: MG_LAST_DELIVERED bounce_type: MG_BOUNCE_TYPE engagement_score: MG_ENGAGEMENT unsubscribed: MG_UNSUBSCRIBEDAPI-endepunkter
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
https://api.mailgun.net/v3/{domain}/messages | POST | Send e-postmeldinger |
https://api.mailgun.net/v3/{domain}/events | GET | Spør hendelseslogger |
https://api.mailgun.net/v3/{domain}/bounces | GET | List returer |
https://api.mailgun.net/v3/{domain}/complaints | GET | List klager |
https://api.mailgun.net/v3/{domain}/unsubscribes | GET | List avmeldinger |
https://api.mailgun.net/v3/{domain}/tags | GET | List tagger |
https://api.mailgun.net/v3/{domain}/tags/{tag}/stats | GET | Hent tagg-statistikk |
https://api.mailgun.net/v3/lists | GET | List sendelister |
https://api.mailgun.net/v3/domains | GET | List domener |
https://api.mailgun.net/v4/address/validate | POST | Valider e-postadresse |
EU-region
For EU-baserte Mailgun-kontoer, bruk https://api.eu.mailgun.net i stedet for https://api.mailgun.net for alle API-endepunkter.
Kodeeksempler
Initialiser kobling
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('mailgun', { apiKey: process.env.MAILGUN_API_KEY, domain: process.env.MAILGUN_DOMAIN, region: 'us'});Send en melding via Mailgun API
// Send en e-post med Mailguns Messages APIconst formData = new URLSearchParams();formData.append('from', `Your App <noreply@${domain}>`);formData.append('subject', 'Welcome to our platform');formData.append('html', '<h1>Welcome!</h1><p>Thanks for signing up.</p>');formData.append('o:tag', 'welcome-email');formData.append('o:tracking', 'yes');
const response = await fetch( `https://api.mailgun.net/v3/${domain}/messages`, { method: 'POST', headers: { 'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}` }, body: formData });
const result = await response.json();// { id: '<[email protected]>', message: 'Queued. Thank you.' }Synkroniser e-posthendelser til Brevo
// Spør Mailgun-hendelser og synkroniser engasjementsdataconst eventsResponse = await fetch( `https://api.mailgun.net/v3/${domain}/events?` + new URLSearchParams({ begin: lastSyncDate, ascending: 'yes', limit: 300, event: 'delivered OR opened OR clicked' }), { headers: { 'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}` } });
const { items, paging } = await eventsResponse.json();
for (const event of items) { const email = event.recipient;
switch (event.event) { case 'delivered': await tajo.contacts.update(email, { attributes: { MG_LAST_DELIVERED: event.timestamp } }); break; case 'opened': await tajo.events.track({ email, event: 'email_opened', properties: { subject: event.message.headers.subject } }); break; case 'clicked': await tajo.events.track({ email, event: 'email_clicked', properties: { url: event.url } }); break; }}
// Følg paginering for flere hendelserif (paging.next) { // Hent neste side med paging.next-URL}Håndter Mailgun-webhooks
const crypto = require('crypto');
app.post('/webhooks/mailgun', async (req, res) => { // Verifiser webhook-signatur const { timestamp, token, signature } = req.body.signature; const encodedToken = crypto .createHmac('sha256', process.env.MAILGUN_WEBHOOK_SIGNING_KEY) .update(timestamp.concat(token)) .digest('hex');
if (encodedToken !== signature) { return res.status(401).send('Unauthorized'); }
const eventData = req.body['event-data']; const event = eventData.event; const email = eventData.recipient;
await tajo.connectors.handleWebhook('mailgun', { topic: event, payload: eventData });
// Håndter returundertrykking if (event === 'failed' && eventData.severity === 'permanent') { await tajo.contacts.update(email, { attributes: { MG_BOUNCE_TYPE: 'hard_bounce' }, emailBlacklisted: true }); }
res.status(200).send('OK');});Synkroniser returer og klager
// Synkroniser returnerte adresser for listehygieneconst bouncesResponse = await fetch( `https://api.mailgun.net/v3/${domain}/bounces?limit=100`, { headers: { 'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}` } });
const { items: bounces } = await bouncesResponse.json();
for (const bounce of bounces) { await tajo.contacts.update(bounce.address, { attributes: { MG_BOUNCE_TYPE: bounce.error.includes('550') ? 'hard_bounce' : 'soft_bounce', MG_BOUNCE_DATE: bounce.created_at }, emailBlacklisted: bounce.error.includes('550') });}Ratebegrensninger
| Endepunkt | Grense | Merknader |
|---|---|---|
| Messages API | Varierer etter plan | 100/time (gratis), ubegrenset (betalt) |
| Events API | Ingen eksplisitt grense | Bruk paginering med maks 300 elementer |
| Validation API | Basert på plan | Betaling per validering |
| Webhooks | Sanntid | Ingen ratebegrensning på levering |
| Suppressions API | Ingen eksplisitt grense | Standard ratebegrensning gjelder |
Sendegrenser
Mailgun håndhever sendegrenser basert på planen din og domenerenommé. Nye domener starter med lavere grenser som øker når senderens omdømme forbedres. Overvåk domenestatistikken i Mailgun-dashbordet.
Feilsøking
| Problem | Årsak | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldig API-nøkkel | Verifiser API-nøkkelen i Mailgun-dashbordet |
| Domene ikke verifisert | DNS-poster mangler | Legg til nødvendige TXT-, CNAME-, MX-poster |
| Webhook ikke mottatt | URL ikke tilgjengelig | Sørg for at webhook-URL er offentlig tilgjengelig |
| Manglende hendelser | Tidsintervall for smalt | Utvid begin-/end-parameterne |
| Lav leveringskvalitet | Domenerenommé | Sjekk domenestatistikk og autentisering |
Feilsøkingsmodus
connectors: mailgun: debug: true log_level: verbose log_webhooks: true log_events: trueBeste praksis
- Verifiser sendedomener - Fullfør DNS-verifisering for optimal leveringskvalitet
- Bruk webhooks for hendelser - Sanntids webhook-levering fremfor polling av Events API
- Håndter returer proaktivt - Undertrykk harde returer umiddelbart i Brevo
- Tagg meldingene dine - Bruk tagger for å kategorisere og analysere e-postytelse
- Overvåk domenerenommé - Spor leveringskvalitetsmetrikker i Mailgun-dashbordet
- Bruk e-postvalidering - Valider adresser før de legges til i Brevo-lister
Sikkerhet
- HTTP Basic Auth - API-nøkkel overføres via Authorization-header
- Webhook-signaturer - HMAC-SHA256-signaturverifisering
- Domeneverifisering - SPF-, DKIM- og DMARC-DNS-autentisering
- IP-hviteliste - Tilgjengelig for dedikerte IP-planer
- TLS-kryptering - Alle API-endepunkter krever HTTPS
- Nøkkelrotasjon - Roter API-nøkler regelmessig via Mailgun-dashbordet