---
title: "Mailgun Konektor"
description: "Kompletan vodič za integraciju Mailguna za sinkronizaciju podataka o dostavi e-pošte, metrika angažmana i transakcijskih e-mail događaja s Brevom putem Taja."
url: https://tajo.io/hr/docs/connectors/marketing/mailgun/
markdown: https://tajo.io/hr/docs/connectors/marketing/mailgun.md
lang: hr-HR
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslat ćemo vam poveznicu za potvrdu zahtjeva za pristup Taju.

# Mailgun Konektor

Status konektora: Planirano Još nije izrađeno. Tajo danas ne pokreće ovaj konektor.

| Izvorno polje | Odredišno polje | Primjer vrijednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Povežite Mailgun s Brevom putem Taja kako biste ujedinili vaše transakcijske i marketinške e-mail podatke, sinkronizirali događaje dostave i metrike angažmana te konsolidirali vašu e-mail infrastrukturu u jedinstven pogled na korisnika.

## Pregled

| Svojstvo | Vrijednost |
| --- | --- |
| **Platforma** | Mailgun (by Sinch) |
| **Kategorija** | E-mail marketing |
| **Složenost postavljanja** | Jednostavno |
| **Službena integracija** | Ne |
| **Sinkronizirani podaci** | Događaji, Kontakti, Isporučivost, Kampanje |
| **Metoda autentifikacije** | API ključ (HTTP Basic Auth) |

## Značajke

- **Sinkronizacija događaja dostave** - Praćenje dostavljenih, vraćenih, otvorenih i kliknutih događaja
- **Metrike angažmana** - Sinkronizacija stopa otvaranja i klikanja na Brevo atribute kontakata
- **Upravljanje vraćenim porukama** - Automatska supresija vraćenih adresa u Brevo
- **Rukovanje pritužbama** - Sinkronizacija pritužbi na spam za higijenu popisa
- **Reputacija domene** - Praćenje zdravlja domene pošiljanja i isporučivosti
- **Praćenje transakcijskih e-mailova** - Korelacija transakcijskih slanja s marketinškim podacima

## Preduvjeti

Prije nego što počnete, osigurajte da imate:

1. Mailgun račun s verificiranom domenom pošiljanja
2. Mailgun API ključ iz [Mailgun Dashboard-a](https://app.mailgun.com/settings/api_security)
3. Brevo račun s API pristupom
4. Tajo račun s dozvolama konektora

## Autentifikacija

### Autentifikacija API ključem

Mailgun koristi HTTP Basic autentifikaciju s `api` kao korisničkim imenom i vašim API ključem kao lozinkom:

```bash
# Dohvatite vaš API ključ na https://app.mailgun.com/settings/api_security
export MAILGUN_API_KEY=key-your-api-key
export MAILGUN_DOMAIN=your-domain.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
```

```javascript
// Format HTTP Basic Auth
const headers = {
  'Authorization': `Basic ${Buffer.from(
    `api:${process.env.MAILGUN_API_KEY}`
  ).toString('base64')}`
};

// Ili koristeći curl
// curl -s --user 'api:YOUR_API_KEY' ...
```

Vrste API ključeva

Mailgun pruža ključeve za slanje specifične za domenu i API ključeve na razini računa. Koristite ključeve za slanje domene za operacije poruka i API ključ računa za upravljačke operacije.

## Konfiguracija

### Osnovna konfiguracija

```yaml
connectors:
  mailgun:
    enabled: true
    api_key: "${MAILGUN_API_KEY}"
    domain: "${MAILGUN_DOMAIN}"
    region: "us"  # ili "eu" za EU regiju

    sync:
      events: true
      contacts: true
      bounces: true
      complaints: true
      schedule: "*/15 * * * *"  # Svakih 15 minuta

    webhook:
      signing_key: "${MAILGUN_WEBHOOK_SIGNING_KEY}"

    lists:
      engaged: 30
      bounced: 31
      complained: 32
```

### Mapiranje polja

```yaml
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_UNSUBSCRIBED
```

## API krajnje točke

| Krajnja točka | Metoda | Opis |
| --- | --- | --- |
| `https://api.mailgun.net/v3/{domain}/messages` | POST | Slanje e-mail poruka |
| `https://api.mailgun.net/v3/{domain}/events` | GET | Upit zapisnika događaja |
| `https://api.mailgun.net/v3/{domain}/bounces` | GET | Popis vraćenih poruka |
| `https://api.mailgun.net/v3/{domain}/complaints` | GET | Popis pritužbi |
| `https://api.mailgun.net/v3/{domain}/unsubscribes` | GET | Popis odjavljenih |
| `https://api.mailgun.net/v3/{domain}/tags` | GET | Popis oznaka |
| `https://api.mailgun.net/v3/{domain}/tags/{tag}/stats` | GET | Dohvati statistike oznaka |
| `https://api.mailgun.net/v3/lists` | GET | Popis mailing lista |
| `https://api.mailgun.net/v3/domains` | GET | Popis domena |
| `https://api.mailgun.net/v4/address/validate` | POST | Validacija e-mail adrese |

EU regija

Za Mailgun račune s bazom u EU, koristite `https://api.eu.mailgun.net` umjesto `https://api.mailgun.net` za sve API krajnje točke.

## Primjeri koda

### Inicijalizacija konektora

```javascript
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'
});
```

### Slanje poruke putem Mailgun API-ja

```javascript
// Slanje e-maila koristeći Mailgun Messages API
const formData = new URLSearchParams();
formData.append('from', `Your App <noreply@${domain}>`);
formData.append('to', 'recipient@example.com');
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: '<message-id@domain.com>', message: 'Queued. Thank you.' }
```

### Sinkronizacija e-mail događaja u Brevo

```javascript
// Upitajte Mailgun događaje i sinkronizirajte podatke o angažmanu
const 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;
  }
}

// Pratite paginaciju za više događaja
if (paging.next) {
  // Dohvatite sljedeću stranicu koristeći URL paging.next
}
```

### Rukovanje Mailgun webhookovima

```javascript
const crypto = require('crypto');

app.post('/webhooks/mailgun', async (req, res) => {
  // Verificirajte potpis webhookova
  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
  });

  // Rukujte supresijom vraćenih poruka
  if (event === 'failed' && eventData.severity === 'permanent') {
    await tajo.contacts.update(email, {
      attributes: { MG_BOUNCE_TYPE: 'hard_bounce' },
      emailBlacklisted: true
    });
  }

  res.status(200).send('OK');
});
```

### Sinkronizacija vraćenih poruka i pritužbi

```javascript
// Sinkronizacija vraćenih adresa za higijenu popisa
const 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')
  });
}
```

## Ograničenja brzine

| Krajnja točka | Ograničenje | Napomene |
| --- | --- | --- |
| Messages API | Ovisi o planu | 100/sat (besplatno), neograničeno (plaćeno) |
| Events API | Bez eksplicitnog ograničenja | Koristite paginaciju s maks. 300 stavki |
| Validation API | Na temelju plana | Plaćanje po validaciji |
| Webhookovi | U stvarnom vremenu | Bez ograničenja brzine na dostavu |
| Suppressions API | Bez eksplicitnog ograničenja | Primjenjuje se standardno ograničenje brzine |

Ograničenja slanja

Mailgun primjenjuje ograničenja slanja na temelju vašeg plana i reputacije domene. Nove domene počinju s nižim ograničenjima koja se povećavaju kako se poboljšava vaša reputacija pošiljatelja. Pratite statistike vaše domene u Mailgun dashboardu.

## Rješavanje problema

| Problem | Uzrok | Rješenje |
| --- | --- | --- |
| 401 Unauthorized | Nevažeći API ključ | Verificirajte API ključ u Mailgun dashboardu |
| Domena nije verificirana | Nedostaju DNS zapisi | Dodajte potrebne TXT, CNAME, MX zapise |
| Webhook nije primljen | URL nije dostupan | Osigurajte da je URL webhookova javno dostupan |
| Nedostaju događaji | Preuzak raspon vremena | Proširite parametre `begin`/`end` |
| Niska isporučivost | Reputacija domene | Provjerite statistike domene i autentifikaciju |

### Način otklanjanja grešaka

```yaml
connectors:
  mailgun:
    debug: true
    log_level: verbose
    log_webhooks: true
    log_events: true
```

## Preporučene prakse

1. **Verificirajte domene pošiljanja** - Dovršite DNS verifikaciju za optimalnu isporučivost
2. **Koristite webhookove za događaje** - Isporuka webhookova u stvarnom vremenu naspram anketiranja Events API-ja
3. **Proaktivno rukujte vraćenim porukama** - Odmah supresirajte hard bounce adrese u Brevo
4. **Označite vaše poruke** - Koristite oznake za kategorizaciju i analizu performansi e-maila
5. **Pratite reputaciju domene** - Pratite metrike isporučivosti u Mailgun dashboardu
6. **Koristite validaciju e-maila** - Validirajte adrese prije dodavanja na Brevo popise

## Sigurnost

- **HTTP Basic Auth** - API ključ prenesen putem zaglavlja Authorization
- **Potpisi webhookova** - HMAC-SHA256 verifikacija potpisa
- **Verifikacija domene** - SPF, DKIM i DMARC DNS autentifikacija
- **Lista dopuštenih IP-ova** - Dostupno za planove s namjenskim IP-om
- **TLS šifriranje** - Sve API krajnje točke zahtijevaju HTTPS
- **Rotacija ključeva** - Periodično rotirajte API ključeve putem Mailgun dashboarda

## Povezani resursi

- [Brevo Konektor](https://tajo.io/hr/docs/connectors/marketing/brevo)
- [Segment Konektor](https://tajo.io/hr/docs/connectors/custom/segment)
- [Vještina sinkronizacije korisnika](https://tajo.io/hr/docs/skills/data-sync/customer-sync)
- [Mailgun API dokumentacija](https://documentation.mailgun.com/)
