EP Email AI Reply
EP Email AI Reply adds an AI draft-reply feature to EP Email’s submissions inbox. Open a contact form submission, click Draft reply with AI, get a draft response you can edit and send.
Published by ElmsPark Studio.
Overview
Section titled “Overview”A customer submits a contact form. You open the submission in EP Email’s inbox. A Draft reply with AI button appears. Clicking it:
- Sends the submission (name, email, message, form metadata) to your configured LLM provider.
- Receives a proposed reply that answers the customer’s question in a professional tone matching your brand voice.
- Populates a reply editor with the draft.
- You review, edit as needed, click Send.
The reply goes out through EP Email’s normal SMTP config, so it’s signed, tracked, and deliverable.
Requirements
Section titled “Requirements”- PageMotor 0.8.2b or later
- EP Email (required)
- EP Suite base class
- An API key from a supported LLM provider (Anthropic, OpenAI, etc. — same options as EP Assistant)
Installation
Section titled “Installation”- Install EP Email first.
ep-email-ai-reply.zipcomes with an EP Suite licence — ElmsPark supplies it directly (see EP Suite plugins); after install it updates through your site’s Updates screen.- Upload via Plugins → Manage Plugins. Activate.
- Configure your LLM provider API key in the plugin settings.
Settings
Section titled “Settings”- LLM provider. Anthropic, OpenAI, or any of the nine providers EP Assistant supports.
- API key. Paste from your provider’s dashboard.
- Model. Pick the model that balances quality and cost for your volume.
- System prompt. Extra instructions appended to every draft request. Use this to set tone: “Reply in a warm, British English voice. Sign off as ‘The team at Acme’.”
- Rate limit. Drafts per admin per hour, to cap API costs.
Using it
Section titled “Using it”- Go to EP Email → Submissions.
- Open a submission.
- Click Draft reply with AI.
- Wait a few seconds — the draft appears in the reply editor.
- Review. Edit anything that’s wrong or that needs your personal touch.
- Click Send.
The reply goes out with your site’s from-address via EP Email. The submission is marked as replied.
Good drafting practice
Section titled “Good drafting practice”- Read before sending. The AI doesn’t always know what you know. If a customer asks a factual question about your business, the AI will guess. Check the answer is actually correct.
- Strip anything generic. AI draft tone can be flat by default. Trim filler sentences so the reply sounds like you.
- Personalise. Mention specifics from their message. “I saw you’re in Glasgow” beats “Thanks for reaching out”.
Troubleshooting
Section titled “Troubleshooting”“Draft button doesn’t appear”
Section titled ““Draft button doesn’t appear””Check:
- The plugin is activated.
- An API key is saved in settings.
- You’re viewing a specific submission (not the list view).
“Draft fails with ‘Unauthorized’”
Section titled ““Draft fails with ‘Unauthorized’””API key is wrong or expired. Rotate it.
“Draft takes ages to generate”
Section titled ““Draft takes ages to generate””LLM provider is slow or rate-limited. Switch to a faster model or a different provider temporarily. Check your provider’s status page.
“Drafts are being charged to my account but I’m not actually sending them”
Section titled ““Drafts are being charged to my account but I’m not actually sending them””Cost is incurred when the draft is generated, not when you send it. If you’re generating drafts and discarding them all, that’s still billable tokens. Use the rate limit setting to cap generations.
“Draft answers a different question than the customer asked”
Section titled ““Draft answers a different question than the customer asked””The AI sometimes misreads submissions, especially ones with unusual phrasing. Always read before sending. If a specific submission confuses the AI, file a note in the review queue — bad outputs help us improve the system prompt.
Feedback and corrections
Section titled “Feedback and corrections”For a quick question about this plugin, EP Support inside your admin is the fastest option. The chat widget sits on every EP plugin settings page and knows which one you’re on, with starter questions and links preloaded for that exact screen.
For anything bigger — a bug report, a feature request, or a “how do I…” that needs a real reply — open a ticket at help.elmspark.com. A real person, helped by AI, writes the reply. Usually within a few hours. Tickets don’t disappear into the void.
Changelog
Section titled “Changelog”1.0.13
Section titled “1.0.13”- A busy AI service no longer costs you a draft. When Claude or OpenAI says it is overloaded, limiting requests or having a brief fault, EP Email AI Reply now tries again by itself, up to three tries in all, waiting as long as the service asks (up to 10 seconds). Until now one busy moment meant no draft for that message.
- An account that is out of credit, a wrong key or a message too long for the model is not retried, and still shows under Recent Problems as before.
- Nothing to do after updating.
1.0.12
Section titled “1.0.12”- Drafts state only what your prompt says. A draft that gives a price, percentage, date, time, day or other number, or mentions a discount, refund, voucher, guarantee or similar, that is not in your prompt is not sent to you. Neither is a draft that claims to be a person.
- Malformed AI answers are not sent. The AI must put its draft between two markers that change for every message. If they are missing, or anything is written outside them, the draft is dropped.
- You can now see when a draft did not arrive, and why. A new Recent Problems list on the settings screen shows each draft that did not reach you: no API key, no recipient, the AI request failed, a draft failed the checks above, or EP Email could not send it. Before, these failures were silent. Each one also raises an “AI Reply Draft Not Sent” event in EP Connect.
1.0.11
Section titled “1.0.11”- AI drafts work again when the Model setting is blank. The default model, Claude Sonnet 4 (
claude-sonnet-4-20250514), has been retired by Anthropic and no longer answers, so no drafts were being written. The default is now Claude Sonnet 5.5 (claude-sonnet-5-5). - If you typed a model into the Model setting yourself, it is still used. If you typed
claude-sonnet-4-20250514, clear the field or change it toclaude-sonnet-5-5. - Drafts from current Claude models are read correctly. These models can return their reasoning before the reply, and the plugin could mistake that for an empty answer.
- Drafts are kept quick, and long ones are no longer cut short.
1.0.10
Section titled “1.0.10”- Your API key is now stored encrypted. It was saved in plain text and shown in full on the settings screen. It is encrypted automatically the first time the site loads after the update, and the field is now a password field. You do not need to re-enter it.
- Drafts now arrive for forms that use EP Email’s Default Recipient. A form with no recipient of its own had its AI draft silently dropped. The draft now goes to the Default Recipient, where the form’s messages go.
- The visitor’s message is now clearly marked off as their text, and the AI is told not to follow instructions inside it or add links, prices or promises it asks for. Drafts still come only to you, never to the visitor.
- Settings language menu. The language menu in this plugin’s settings now lists only the languages it is actually translated into, plus English, so you can no longer pick a language that changes nothing.
- Danish. Adds a Danish translation.
- The Docs link on the Plugins screen now opens this plugin’s page on documentation.elmspark.com.
- Removes a function call that PHP 8.5 reports as deprecated, so it no longer fills your error log.
- Fixes “Your session has expired. Please reload to ensure your security.” on PageMotor 0.11. The message appeared on this plugin’s admin screens even though you were signed in perfectly normally, and whatever you were doing failed to save.
- Nothing was wrong with your session. PageMotor 0.11 started handling part of the security check that this plugin was already handling itself, and the two together made every save look invalid. The plugin now checks whether PageMotor has already done it.
- Visitors who were not signed in were never affected, on any version.
- There is nothing to reconfigure, and nothing else changed.