reach
Skill28 starsChanged 5 months agoMITView on GitHub
Hostinger Reach (Email Marketing) API for contact management, segmentation, contact groups, and profile management. Use when creating or listing contacts, managing contact segments or groups, filtering contacts by subscription status, or working with email marketing profiles.
- Sends data out
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 9 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 224
Use the direct POST /contacts endpoint for general contact creation.
- Distinctive: line 225
Prefer segments over contact groups for organizing contacts — groups are legacy
- Very specific: line 230
Use and logic for narrow, precise targeting
- Very specific: line 231
Use or logic for broader audience reach
- Distinctive: line 233
Create segments before campaigns to preview audience size
- Distinctive: line 236
Verify sender profiles to improve deliverability
- Distinctive: line 237
Use consistent sender identity across campaigns
- Distinctive: line 242
Check subscription status — contact may be unsubscribed or pending
- Distinctive: line 243
If double opt-in is enabled, contact must confirm their email first
- Distinctive: line 244
Verify the contact's email address is valid and not bouncing
- Distinctive: line 247
Verify conditions and operators are correct
- Very specific: line 248
Check that logic field (and/or) matches your intent
- Distinctive: line 249
Ensure contacts exist that match all/any conditions
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Hostinger Reach (Email Marketing)
The Reach API provides email marketing capabilities — managing contacts, creating segments for targeted campaigns, and working with sender profiles.
Table of Contents
- Core Concepts
- Common Patterns
- API Reference
- Best Practices
- Troubleshooting
- References
Core Concepts
Contacts
Contacts are email recipients in your marketing system. Each contact has basic information (name, email, surname) and a subscription status. If double opt-in is enabled, new contacts start with a pending status and receive a confirmation email.
Segments
Segments group contacts based on specific criteria (email, name, subscription status, engagement metrics, etc.). Segments support complex filtering with operators like equals, contains, gte, lte, opened, clicked, etc.
Profiles
Sender profiles represent the email identity used to send campaigns. Each profile has basic information and is associated with your account.
Contact Groups
Groups are a way to organize contacts (deprecated in favor of segments).
Subscription Status
Contacts can have different subscription statuses that determine whether they receive emails. Status can be used as a filter when listing contacts.
Common Patterns
Create and Manage Contacts
# Create a new contact (direct)
curl -X POST "https://developers.hostinger.com/api/reach/v1/contacts" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "john@example.com",
"name": "John",
"surname": "Doe",
"phone": "+15551234567",
"note": "Met at conference"
}'
# Create a new contact (scoped to a specific sender profile)
curl -X POST "https://developers.hostinger.com/api/reach/v1/profiles/{profileUuid}/contacts" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "john@example.com",
"name": "John",
"surname": "Doe"
}'
# List contacts (paginated)
curl -X GET "https://developers.hostinger.com/api/reach/v1/contacts?page=1" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# Filter contacts by subscription status
curl -X GET "https://developers.hostinger.com/api/reach/v1/contacts?subscription_status=active" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# List contact groups
curl -X GET "https://developers.hostinger.com/api/reach/v1/contacts/groups" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# Delete a contact
curl -X DELETE "https://developers.hostinger.com/api/reach/v1/contacts/{uuid}" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"Python SDK:
from hostinger_api import Hostinger
client = Hostinger(api_token="YOUR_API_TOKEN")
# List contacts
contacts = client.reach.contacts.list(page=1)
for contact in contacts:
print(f"{contact.name} <{contact.email}>")TypeScript SDK:
import { Hostinger } from "hostinger-api-sdk";
const client = new Hostinger({ apiToken: "YOUR_API_TOKEN" });
const contacts = await client.reach.contacts.list({ page: 1 });
for (const contact of contacts) {
console.log(`${contact.name} <${contact.email}>`);
}PHP SDK:
use Hostinger\Api\HostingerApi;
$client = new HostingerApi('YOUR_API_TOKEN');
$contacts = $client->reach->contacts->list(['page' => 1]);
foreach ($contacts as $contact) {
echo "{$contact->name} <{$contact->email}>\n";
}Work with Segments
# List all segments
curl -X GET "https://developers.hostinger.com/api/reach/v1/segmentation/segments" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# Create a segment (e.g., engaged subscribers who opened emails)
curl -X POST "https://developers.hostinger.com/api/reach/v1/segmentation/segments" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Engaged Subscribers",
"logic": "and",
"conditions": [
{
"field": "subscription_status",
"operator": "equals",
"value": "active"
},
{
"field": "email_engagement",
"operator": "opened"
}
]
}'
# Get segment details
curl -X GET "https://developers.hostinger.com/api/reach/v1/segmentation/segments/{segmentUuid}" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# List contacts in a segment (paginated)
curl -X GET "https://developers.hostinger.com/api/reach/v1/segmentation/segments/{segmentUuid}/contacts?page=1&per_page=50" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"Manage Profiles
# List all sender profiles
curl -X GET "https://developers.hostinger.com/api/reach/v1/profiles" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"API Reference
Contacts
| Method | Endpoint | Description |
GET | /api/reach/v1/contacts | List contacts (paginated, filterable) |
POST | /api/reach/v1/contacts | Create a contact (direct) |
POST | /api/reach/v1/profiles/{profileUuid}/contacts | Create a contact scoped to a sender profile |
GET | /api/reach/v1/contacts/groups | List contact groups |
DELETE | /api/reach/v1/contacts/{uuid} | Delete a contact |
Segments
| Method | Endpoint | Description |
GET | /api/reach/v1/segmentation/segments | List all segments |
POST | /api/reach/v1/segmentation/segments | Create a new segment |
GET | /api/reach/v1/segmentation/segments/{segmentUuid} | Get segment details |
GET | /api/reach/v1/segmentation/segments/{segmentUuid}/contacts | List segment contacts |
Profiles
| Method | Endpoint | Description |
GET | /api/reach/v1/profiles | List sender profiles |
Contact Query Parameters
| Parameter | Description |
page | Page number |
group_uuid | Filter by group UUID |
subscription_status | Filter by subscription status |
Segment Condition Operators
| Operator | Description |
equals / not_equals | Exact match |
contains / not_contains | Partial match |
gte / lte | Greater/less than or equal |
exists | Field has a value |
within_last_days / not_within_last_days | Date range |
older_than_days | Older than N days |
opened / not_opened | Email open engagement |
clicked / not_clicked | Email click engagement |
bounced / not_bounced | Bounce status |
delivered / not_delivered | Delivery status |
unsubscribed / not_unsubscribed | Unsubscribe status |
Best Practices
Contact Management
- Use the direct
POST /contactsendpoint for general contact creation; usePOST /profiles/{profileUuid}/contactswhen the contact must be tied to a specific sender profile - Prefer segments over contact groups for organizing contacts — groups are legacy
- Enable double opt-in for compliance with email marketing regulations (GDPR, CAN-SPAM)
- Clean your contact list regularly by removing bounced and unsubscribed contacts
Segmentation
- Use
andlogic for narrow, precise targeting - Use
orlogic for broader audience reach - Combine engagement operators (
opened,clicked) with time-based operators for re-engagement campaigns - Create segments before campaigns to preview audience size
Profiles
- Verify sender profiles to improve deliverability
- Use consistent sender identity across campaigns
Troubleshooting
Contact Not Receiving Emails
- Check subscription status — contact may be unsubscribed or pending
- If double opt-in is enabled, contact must confirm their email first
- Verify the contact's email address is valid and not bouncing
Segment Returns No Contacts
- Verify conditions and operators are correct
- Check that
logicfield (and/or) matches your intent - Ensure contacts exist that match all/any conditions
422 Validation Error on Contact Creation
- Missing required fields (email is required)
- Invalid email format
- Duplicate email address in the system
References
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

