پرش به مستندات
API

فرم‌ها چگونه کار می‌کنند

فرم‌های ثبت‌نام افراد را به گروه‌های مخاطبان شما می‌افزایند. یکی را اینجا بسازید، آن را به‌صورت پیوند به اشتراک بگذارید، در هر سایتی جاسازی کنید، یا از کد خودتان به آن ارسال کنید.

یک پیش‌نویس و یک نسخهٔ فعال

هر فرم دو نسخه از آنچه بازدیدکنندگان می‌بینند نگه می‌دارد. document پیش‌نویسی است که ویرایش می‌کنید، و publishedDocument همان است که صفحهٔ میزبانی‌شده، جاسازی و اندپوینت subscribe به کار می‌برند. ذخیره کردن فقط پیش‌نویس را تغییر می‌دهد، و POST /forms/{id}/publish آن را در نسخهٔ فعال کپی می‌کند. hasUnpublishedChanges به شما می‌گوید که این دو با هم فرق دارند.

  • draft: هرگز منتشر نشده. هیچ‌کس نمی‌تواند آن را ببیند یا از راه آن ثبت‌نام کند.
  • live: منتشرشده و در حال پذیرفتن ثبت‌نام.
  • paused: منتشرشده اما بسته. صفحه پیام بسته‌بودن را از متن‌های فرم نشان می‌دهد و ثبت‌نام‌ها رد می‌شوند.

settings فرق دارند: اینکه ثبت‌نام‌ها کجا می‌روند، تأیید دوگانه، فرستنده، رفتار پس از ثبت‌نام و اینکه دربارهٔ هر ثبت‌نام به چه کسی خبر داده شود. این‌ها به‌محض ذخیره شدن اعمال می‌شوند، چه فرم منتشر شده باشد چه نه.

فیلدها

سند فهرستی از fields، متن‌های پیرامونشان در copy و یک style است. هر فیلد ورودی یک key دارد، یعنی نامی که جوابش با آن ارسال می‌شود: یک حرف کوچک که پس از آن تا 39 حرف کوچک، رقم یا زیرخط می‌آید، در فرم یکتاست و هرگز با oe_ شروع نمی‌شود. هر فرم دقیقاً یک فیلد email دارد که کلیدش email و الزامی است.

  • ورودی‌ها: email، text، textarea، number، phone، url و date.
  • گزینه‌ای‌ها: select، radio و checkboxes، هر کدام با options.
  • checkbox برای بله یا خیر، و consent برای کادری که وقتی الزامی است باید تیک بخورد.
  • audiences به شخص اجازه می‌دهد فهرست‌ها را انتخاب کند: value هر گزینه شناسهٔ یک گروه مخاطبان در این فضای کاری است.
  • hidden مقداری را می‌برد که بازدیدکننده هرگز نمی‌بیند: همانی که صفحهٔ شما ارسال می‌کند، وگرنه defaultValue آن، مثلاً نام یک کارزار.
  • heading، paragraph و divider فقط چیدمان فرم را می‌سازند و چیزی ارسال نمی‌کنند.

روی یک فیلد متنی mapsTo را برابر firstName، lastName یا name بگذارید تا جواب، نام مخاطبی شود که ثبت‌نام می‌سازد. مخاطبی که از قبل وجود دارد نامش را نگه می‌دارد. هر جواب همراه با برچسبی که آن زمان داشت روی پاسخ نگه داشته می‌شود، پس پاسخ‌های قدیمی پس از تغییر فرم هم درست خوانده می‌شوند.

گذاشتن فرم روی یک صفحه

اول منتشر کنید. سپس از میان این سه، هر کدام را که به صفحه می‌خورد به کار ببرید. همهٔ آن‌ها به همان فرم می‌رسند و ثبت‌نام‌ها را یکسان می‌شمارند. بازدیدها فقط در صفحهٔ میزبانی‌شده و جاسازی شمرده می‌شوند، پس ثبت‌نام‌هایی که از راه HTML یا کد خودتان می‌آیند نرخ تبدیل را بالا می‌برند.

  • صفحهٔ میزبانی‌شده در url، صفحه‌ای مستقل که می‌توانید از هر جایی به آن پیوند دهید.
  • اسکریپت جاسازی، که فرم را در قابی که اندازه‌اش را خودش تنظیم می‌کند روی صفحهٔ شما می‌گذارد.
  • HTML یا کد خودتان، که جواب‌ها را به subscribeUrl ارسال می‌کند.
جاسازی
<script src="https://openemail.uk/embed/form.js" data-openemail-form="frm_3b9d2e7a1c4f80d56e2a9b14" async></script>
HTML
<form action="https://api.openemail.uk/subscribe/frm_3b9d2e7a1c4f80d56e2a9b14" method="post">  <input type="email" name="email" required>  <div style="position:absolute;left:-9999px" aria-hidden="true">    <input type="text" name="oe_website" tabindex="-1" autocomplete="off">  </div>  <button type="submit">Subscribe</button></form>

یک فرم HTML ساده به صفحهٔ تشکر، یا به settings.redirectUrl، هدایت می‌شود. کدی که JSON ارسال می‌کند به‌جای آن پاسخ JSON می‌گیرد، که در صفحهٔ subscribe شرح داده شده است.

تأیید دوگانه

وقتی settings.doubleOptIn روشن است، ثبت‌نام به‌صورت pending ذخیره می‌شود و پیوندی از settings.senderAddress، که نشانی‌ای از این فضای کاری است، برای شخص ایمیل می‌شود. او وقتی پیوند را باز کند به گروه‌های مخاطبان می‌پیوندد. پیوند هفت روز کار می‌کند. کسی که پیش‌تر اشتراکش را در یک گروه مخاطبان لغو کرده فقط از همین راه دوباره مشترک می‌شود، و هرگز با فرمی که تأیید دوگانه ندارد. ثبت‌نام دوباره پیش از تأیید، همان ثبت‌نام در انتظار را به‌روز می‌کند و ثبت‌نام دیگری نمی‌افزاید.

برای محافظت از کسانی که به آن‌ها ایمیل می‌زنید، هر نشانی برای هر فرم دست‌بالا یک پیام تأیید در هر ده دقیقه و در کل فضای کاری پنج پیام در روز می‌گیرد. می‌توانید ثبت‌نامِ در انتظار تأیید را خودتان بپذیرید، یا پیوند تازه‌ای برایش بفرستید.

چه کسی چه چیزی را می‌بیند

  • خواندن به forms:read و تغییر دادن به forms:write نیاز دارد. پذیرفتن یک ثبت‌نام contacts:write را هم لازم دارد، چون یک مخاطب می‌افزاید.
  • هر کاری که باعث شود فرم ایمیل بفرستد به emails:send هم نیاز دارد: روشن کردن تأیید دوگانه، تنظیم فرستنده یا ایمیل تأیید، انتشار یا ادامهٔ یک فرم با تأیید دوگانه، و ارسال دوبارهٔ پیام تأیید.
  • کلید API و مالک همهٔ فرم‌های فضای کاری را می‌بینند. برنامه‌ای که یک عضو وصل کرده فقط فرم‌هایی را می‌بیند که همان عضو ساخته، و فقط گروه‌های مخاطبانی را که همان عضو ساخته به‌علاوهٔ گروه‌های درون‌ساخت.
  • ساختن، به‌روزرسانی، انتشار، ادامه یا تکثیر فرمی که فرستنده یا نشانی‌های اعلانش بیرون از دسترسِ یک کلید یا برنامهٔ محدود باشد، با 422 capability_unsupported پاسخ داده می‌شود.
  • کلید یا برنامه‌ای که به برخی نشانی‌ها محدود است فقط می‌تواند نشانی‌هایی را که در اختیار دارد به‌عنوان فرستنده و نشانی‌های اعلان تنظیم کند.
  • حذف یک فرم، مانند دیگر تغییرهای مخرب، از برنامهٔ OAuth کد تأیید هویت می‌خواهد. کلید API هرگز به آن نیاز ندارد.

وب‌هوک‌های form.submitted و form.confirmed سیستم‌های شما را از هر ثبت‌نام باخبر می‌کنند. وب‌هوکی که به برخی نشانی‌ها محدود است هرگز آن‌ها را دریافت نمی‌کند، چون ثبت‌نام‌ها به کل فضای کاری تعلق دارند.

ربات‌ها و محدودیت‌ها

  • فیلدی به نام oe_website تله‌ای برای ربات‌هاست: آن را خالی و بیرون از صفحه نگه دارید، همان‌طور که HTML بالا می‌کند. ثبت‌نامی که آن را پر کند پاسخی عادی می‌گیرد و دور ریخته می‌شود.
  • صفحهٔ میزبانی‌شده و جاسازی یک زمان شروع امضاشده را هم بررسی می‌کنند، و فرمی که سریع‌تر از آنکه یک شخص بتواند پرش کند برگردانده شود به همین شکل دور ریخته می‌شود.
  • یک شبکه می‌تواند در ده دقیقه 40 ثبت‌نام بفرستد، در همهٔ فرم‌هایتان روی هم و صرف‌نظر از نتیجه. پس از آن، فراخوانندگانی که JSON می‌فرستند 429 form_rate_limited می‌گیرند، و یک فرم HTML ساده با ?outcome=limited به صفحهٔ میزبانی‌شده می‌رود.
  • هر فضای کاری به‌طور پیش‌فرض 100 فرم نگه می‌دارد.

از کد، ترمینال و عامل‌ها

همهٔ این‌ها در SDK هم به‌صورت openemail.forms و در CLI به‌صورت openemail forms وجود دارد، و سرور MCP ابزارهای فرم دارد، پس یک عامل می‌تواند فرمی را بسازد، منتشر کند و زیر نظر بگیرد. در MCP، کلاینت خودش طراحی را می‌نویسد و آن را به‌صورت document می‌فرستد.

ارسال به subscribeUrl از کد خودتان به هیچ اعتبارنامه‌ای نیاز ندارد. جواب‌ها را به‌صورت JSON بفرستید، صفحه‌ای را که فرم روی آن بود به‌صورت oe_source بیفزایید، oe_started را کنار بگذارید، و oe_website را خالی بفرستید یا اصلاً نفرستید. همهٔ ثبت‌نام‌هایی که از یک شبکه می‌آیند سقف 40 بار در هر ده دقیقه را با هم شریک‌اند، پس سروری که ثبت‌نام‌های افراد زیادی را بازارسال می‌کند زود به آن می‌رسد: افرادی را که از پیش می‌شناسید به‌جای آن با درون‌بری گروه مخاطبان بیفزایید.

صندوق ورودی شما،
با شرایط خودتان.

زیرساخت ایمیل برای کسب‌وکارها، هوش مصنوعی، عامل‌ها و ایمیل شخصی. ساخته‌شده برای مقیاس، حریم خصوصی و کنترل. هر چه ایمیل باید از روز نخست می‌داشت.

© 2026 OpenEmail. همه حقوق محفوظ است.