mailtrap-managing-contacts – Design & UI skill for AI agents
Manage Mailtrap contacts, lists, segments, custom fields, imports, CRM syncs, and campaign audiences through the UI or API.
Install the mailtrap-managing-contacts skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/mailtrap-managing-contacts-abdae.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /mailtrap-managing-contacts – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/mailtrap-managing-contacts-abdae.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $mailtrap-managing-contacts – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/mailtrap-managing-contacts-abdae.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /mailtrap-managing-contacts – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/mailtrap-managing-contacts-abdae.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /mailtrap-managing-contacts – then describe the task you want done.
SKILL.md content
Managing Mailtrap contacts
Overview
Before generating API request bodies: check the [Contacts OpenAPI spec](https://github.com/mailtrap/mailtrap-openapi/blob/main/specs/contacts.openapi.yml) for current field names, required parameters, and nested structures.
Contacts are the marketing database: lists, segments, custom fields, and imports for campaign audiences and related workflows. The Contacts API automates create/update and can feed CRM or CDP sync (your code, or tools like Zapier, Make, n8n — see [Import contacts](https://docs.mailtrap.io/email-marketing/contacts/import-contacts.md)).
Suppressions (hard bounces, spam complaints, unsubscribes on the sending side) live in the sending product and block delivery for those addresses on your streams. That is applied separately from marketing filters (segments, list membership, consent flags) that decide who is eligible for campaigns. For sending-side blocks, see [Suppressions](https://docs.mailtrap.io/developers/email-sending/suppressions.md) and mailtrap-sending-emails.
Related skills: mailtrap-sending-emails (live send paths).
When to use
- Programmatic contact management (create, update, [bulk import](https://docs.mailtrap.io/developers/promotional/contacts/bulk-import.md))
- Sync with CRMs or data warehouses
- Contact list cleanup and CSV import
- Updating contacts with custom fields or firing custom events for [automations](https://docs.mailtrap.io/email-marketing/automations.md)
- Segments and [custom fields](https://docs.mailtrap.io/email-marketing/contacts/custom-fields.md) for audience building
Authorization
All endpoints below need Authorization: Bearer $MAILTRAP_API_TOKEN and an $MAILTRAP_ACCOUNT_ID in the path. Resolve $MAILTRAP_ACCOUNT_ID from GET https://mailtrap.io/api/accounts, and store tokens in environment variables or a secrets manager.
Endpoints (replace placeholders)
| Action | Method | URL | Reference |
| -------------------------------------- | ------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Create / get / update / delete contact | various | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts | [Contacts](https://docs.mailtrap.io/developers/promotional/contacts/contacts.md) |
| Bulk import (async job) | POST | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/imports | [Bulk import](https://docs.mailtrap.io/developers/promotional/contacts/bulk-import.md) |
| Contact lists | various | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/lists | [Contact lists](https://docs.mailtrap.io/developers/promotional/contacts/contact-lists.md) |
| Custom fields | various | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/fields | [Contact fields](https://docs.mailtrap.io/developers/promotional/contacts/contact-fields.md) |
| Custom events | POST | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/{contact_identifier}/events | [Contact events](https://docs.mailtrap.io/developers/promotional/contacts/contact-events.md) |
| Export contacts | various | https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/exports | [Export contacts](https://docs.mailtrap.io/developers/promotional/contacts/export-contacts.md) |
- Rate limit (typical): 200 requests per 60 seconds per account — prefer bulk import for large loads.
- Bulk import limit: up to 50,000 contacts per import request (async job); poll import status with
GET .../contacts/imports/{import_id}. See [Bulk import](https://docs.mailtrap.io/developers/promotional/contacts/bulk-import.md).
Examples (curl)
Single contact create (with custom fields)
curl -X POST "https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts" \
-H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"contact": {
"email": "[email protected]",
"fields": {"first_name": "John", "last_name": "Smith", "company": "Example Inc"},
"list_ids": [1, 2, 3]
}
}'Bulk import (array of contacts)
curl -X POST "https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/imports" \
-H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"contacts": [
{"email": "[email protected]", "fields": {"first_name": "John"}, "list_ids_included": [1, 2]},
{"email": "[email protected]", "fields": {"first_name": "Jane"}, "list_ids_included": [1]}
]
}'Custom event (event name + payload)
curl -X POST "https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/contacts/{contact_identifier}/events" \
-H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"name": "UserLogin", "params": {"user_id": 101, "is_active": true}}'Concepts
- Lists — explicitly defined list of contacts.
- Segments — dynamic groups; see [Segments](https://docs.mailtrap.io/email-marketing/contacts/segments.md).
- Custom fields — properties like first and last name or membership level; see [Custom fields](https://docs.mailtrap.io/email-marketing/contacts/custom-fields.md).
- Custom events —
POST .../eventswith an eventnameandparamsobject for [automations](https://docs.mailtrap.io/email-marketing/automations.md).
CRM and sync
- API: suitable for real-time or scheduled sync from your CRM or database.
- No-code: Zapier, Make.com, n8n per [Import contacts – third-party tools](https://docs.mailtrap.io/email-marketing/contacts/import-contacts.md).
Campaigns use case
Contacts power marketing campaigns: you maintain clean lists, consent, and attributes here; campaign authoring and scheduling are product features documented in [Campaigns](https://docs.mailtrap.io/email-marketing/campaigns.md).
Common mistakes
| Mistake | Fix |
| --------------------------------------------------- | ---------------------------------------------------------------------------- |
| Hitting rate limits with one-by-one creates | Use /contacts/imports for bulk loads (respect 50k per request) and backoff |
| Treating marketing contacts as sending suppressions | Use Suppressions for blocked recipients on send streams |
Limitations
- Contact API shapes can change; check Mailtrap's current OpenAPI spec before generating request bodies.
- Resolve the intended account/list and authorized batch before imports, contact deletion, exports or custom events. Events and list changes can trigger campaigns. Preserve suppression/consent state, minimize exported personal data, and never treat address possession as marketing consent.
Related skills
- makepad-2-0-animation – Makepad 2.0 guidance for animation; use when building or debugging Makepad UI code.
- makepad-animation – CRITICAL: Use for Makepad animation system. Triggers on: makepad animation, makepad…
- makepad-skills – Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and…
- markstream-nuxt – Integrate markstream-vue into Nuxt 3 or 4 with SSR-safe client boundaries, renderer…
- markstream-svelte – Integrate the beta markstream-svelte renderer into Svelte 5 or SvelteKit with runes…
- markstream-vue2 – Integrate markstream-vue2 into Vue 2.6 or 2.7 with correct Composition API decisions…
- markstream-vue2-vite – Integrate markstream-vue2 into Vue 2 plus Vite with bundled worker imports, CSS…
- material-design – Web and App implementation guide for Material Design. Trigger when user wants Google's…