Author: @skills-il
Build compliant email campaigns for the Israeli market with Hebrew RTL templates, anti-spam law validation, and deliverability optimization. Use when user asks about Israeli email marketing, Hebrew email templates, Chok HaSpam compliance, Israeli ISP deliverability, opt-in consent management, or RTL HTML email formatting.
npx skills-il add skills-il/communication --skill israeli-email-complianceAmendment 40 to the Communications Law (Telecommunications), 5742-1982, is Israel's anti-spam regulation. Key differences from US CAN-SPAM:
| Requirement | Israel (Chok HaSpam) | US (CAN-SPAM) |
|---|---|---|
| Consent model | Prior explicit consent ("haskama mukdemet") required BEFORE sending | Opt-out model (send until unsubscribe) |
| Consent format | Written, recorded, or digital with timestamp | No specific format |
| Unsubscribe deadline | Immediate (within 2 business days max) | 10 business days |
| Penalties | Up to 1,000 NIS per message without consent (civil), criminal fines | Up to $46,517 per email |
| Private lawsuits | Recipients can sue for 1,000 NIS per message without proving damages | Must prove damages |
Exceptions where prior consent is NOT required:
from datetime import datetime, timezone
from dataclasses import dataclass, field
@dataclass
class ConsentRecord:
"""Track opt-in consent per Israeli anti-spam law requirements."""
email: str
consented_at: str # ISO 8601 timestamp
consent_method: str # "web_form", "written", "verbal_recorded"
consent_source: str # URL or description of where consent was given
ip_address: str = ""
channels: list = field(default_factory=lambda: ["email"])
is_active: bool = True
revoked_at: str = ""
def to_record(self) -> dict:
return {
"email": self.email,
"consented_at": self.consented_at,
"method": self.consent_method,
"source": self.consent_source,
"ip": self.ip_address,
"channels": self.channels,
"active": self.is_active,
"revoked_at": self.revoked_at
}
def validate_consent(record: ConsentRecord) -> list:
"""Validate consent record meets Israeli legal requirements."""
issues = []
if not record.consented_at:
issues.append("Missing consent timestamp (required by law)")
if record.consent_method not in ("web_form", "written", "verbal_recorded"):
issues.append("Consent method must be verifiable")
if not record.consent_source:
issues.append("Must record where consent was obtained")
return issuesMulti-channel consent management (email + SMS): When a user consents to email, that does NOT automatically cover SMS or WhatsApp. Each channel requires separate explicit consent under Chok HaSpam.
Hebrew emails require proper RTL (right-to-left) markup. Without it, ISPs may flag emails as spam or render them incorrectly.
<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
direction: rtl;
text-align: right;
font-family: Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
}
.container {
max-width: 600px;
margin: 0 auto;
background-color: #ffffff;
padding: 20px;
}
.header { text-align: center; padding: 20px 0; }
.content { padding: 20px; line-height: 1.8; }
.unsubscribe {
text-align: center;
padding: 20px;
font-size: 12px;
color: #666666;
border-top: 1px solid #eeeeee;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>COMPANY_NAME</h1>
</div>
<div class="content">
<p>MESSAGE_BODY</p>
</div>
<div class="unsubscribe">
<p>
UNSUBSCRIBE_TEXT_HE
<a href="UNSUBSCRIBE_URL">UNSUBSCRIBE_LINK_HE</a>
</p>
<p>COMPANY_ADDRESS</p>
</div>
</div>
</body>
</html>Critical RTL rules:
dir="rtl" on the root elementtext-align: right as default<span dir="ltr">Israeli ISPs have specific patterns that affect email deliverability:
| ISP | Email Domain | Notes |
|---|---|---|
| Bezeq (bezeq.net) | @bezeq.net, @bezequint.net | Conservative spam filters, warm up slowly |
| HOT (hot.net.il) | @hot.co.il, @hotmail.co.il | Monitor bounce rates carefully |
| Partner (012) | @012.net.il | Aggressive rate limiting |
| Cellcom | @cellcom.co.il | Standard deliverability |
| Walla! | @walla.co.il | Popular Israeli webmail, check image rendering |
| Gmail IL | @gmail.com | Standard Google filters, Hebrew subject lines OK |
Deliverability best practices for Israel:
Under Chok HaSpam, every commercial email MUST include a clear, functional unsubscribe mechanism in Hebrew.
def generate_unsubscribe_section(unsub_url: str, company_name: str) -> dict:
"""Generate bilingual unsubscribe section for Israeli emails."""
return {
"he": (
f"אינך מעוניין/ת לקבל הודעות מ-{company_name}? "
f'<a href="{unsub_url}">לחצ/י כאן להסרה מרשימת התפוצה</a>. '
"ההסרה תתבצע תוך 2 ימי עסקים."
),
"en": (
f"Don't want to receive emails from {company_name}? "
f'<a href="{unsub_url}">Click here to unsubscribe</a>. '
"Removal will be processed within 2 business days."
)
}
def process_unsubscribe(email: str, record: dict) -> dict:
"""Process unsubscribe request per Israeli law requirements."""
return {
"email": email,
"status": "unsubscribed",
"processed_at": datetime.now(timezone.utc).isoformat(),
"must_complete_by": "2 business days from request",
"channels_removed": record.get("channels", ["email"]),
"confirmation_sent": True
}Unsubscribe requirements under Chok HaSpam:
The Israeli Consumer Protection Law grants a 14-day cancellation right ("zchut bitulim") for transactions made via commercial communications:
def cancellation_notice_required(transaction_type: str) -> dict:
"""Check 14-day cancellation requirements for email-driven transactions."""
rules = {
"cooling_off_period_days": 14,
"notice_required": True,
"applies_to": [
"Purchases made via email promotions",
"Subscriptions initiated from email campaigns",
"Services booked through email offers"
],
"must_include_in_email": [
"Clear pricing in NIS (including VAT)",
"Cancellation rights notice in Hebrew",
"Business registration number",
"Contact details for cancellation requests"
]
}
return rulesUse the bundled validation script to check your email campaign:
python scripts/check_email.py --html campaign.html --consent-db consents.jsonThe script validates:
User says: "Create a Hebrew email campaign for our Passover sale" Actions:
User says: "Set up order confirmation emails in Hebrew for our e-commerce site" Actions:
User says: "We're moving from Mailchimp to SendGrid, how do we handle Israeli consent records?" Actions:
User says: "We send both emails and SMS to customers, is our consent setup correct?" Actions:
scripts/check_email.py -- Validates email campaign HTML against Israeli anti-spam law requirements. Checks for Hebrew unsubscribe links, RTL markup, required legal text, and consent record completeness. Run: python scripts/check_email.py --helpreferences/anti-spam-law.md -- Summary of Amendment 40 to the Communications Law (Chok HaSpam): consent requirements, penalties, exceptions, enforcement patterns, and comparison with international anti-spam laws. Consult when verifying campaign compliance or advising on consent architecture.Cause: Recipient email not in consent database or consent was revoked. Solution: Verify recipient explicitly opted in. Under Israeli law, you CANNOT send commercial email without prior consent. Check if consent was recorded with timestamp and source.
Cause: Outlook uses Word rendering engine which handles RTL inconsistently.
Solution: Add dir="rtl" to every table cell individually, not just the wrapper. Use inline styles instead of CSS classes for direction properties.
Cause: Sending too fast to Israeli ISP domains or poor list hygiene. Solution: Implement domain-based throttling (max 100/hour for Bezeq, 200/hour for HOT). Remove hard bounces immediately. Warm up gradually on new IPs.
Supported Agents
Trust Score
This skill can execute scripts and commands on your system.
1 occurrences found in code
This skill can make network requests to external services.
1 occurrences found in code
Build WhatsApp automation flows for the Israeli market including chatbots, auto-reply sequences, and campaign scheduling with Shabbat and holiday awareness. Use when user asks about WhatsApp chatbot development in Israel, automated WhatsApp responses in Hebrew, or scheduling WhatsApp campaigns around Shabbat. Do NOT use for WhatsApp Business API setup (use israeli-whatsapp-business instead).
Aggregate Israeli job market data, optimize Hebrew CVs, benchmark salaries, and track employment trends. Use when user asks about job searching in Israel, Israeli CV writing, Hebrew resume, salary expectations in Israel, AllJobs, Drushim, JobMaster, JobNet, LinkedIn Israel, Israeli job interviews, or Israeli employment benefits. Covers major job platforms, salary data, and Israeli workplace culture. Do NOT use for international job markets outside Israel or immigration/visa work permits (see separate skill).
Optimize Monday.com workflows for Israeli teams with board management, automation recipes, and API integration. Use when user asks about Monday.com boards, Monday.com automations, "monday.com API", work management, sprint planning with Israeli calendar, or team workflow optimization on Monday.com. Enhances the official mondaycom/mcp server with Israeli team best practices including Sunday-Thursday work week, Hebrew boards, and holiday-aware scheduling. Do NOT use for other project management tools (Jira, Asana, etc.).
Want to build your own skill? Try the Skill Creator · Submit a Skill