UNPKG

@awesomate/hosting-mcp

Version:

Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases

216 lines (190 loc) • 12.3 kB
# Solutions — the recipes the greeter offers from Business-outcome recipes, each composed only of parts that exist. Lead with the outcome, never the technology. Reads work on every plan; **every build below needs Support Plus+** — say so once, honestly, before starting (a 403 on a write is the plan gate; offer the upgrade, don't retry). Anything that sends email needs an email credential in THEIR n8n — check the inventory (`awesomate_n8n_inspect {what:'credentials'}`) before promising it. **Leads and sign-ups go to Contacts.** When `awesomate_get_context` says `features.contacts.available` is true, every lead or sign-up from a form goes into Contacts with the Awesomate node, never into an n8n data table, and nothing here emails a lead or subscriber from Gmail or SMTP in n8n. Contacts keeps one record per email address, and its rules (consent, unsubscribes, bounces) apply to everything sent to them later. The two recipes below say how; the node itself is awesomate-n8n `references/awesomate-node.md`. **A sign-up box or a free download: use the hub's own form first.** `awesomate_crm_forms` (the awesomate-funnels skill) makes a form that adds the person to Contacts with a tag, emails them the download from the business's own name, and offers the email list as an unticked box, recording their yes itself (single or double opt-in). No n8n, no forwarder, no email credential, and it works on a WordPress page, a `static-landing` page or any site builder. Build the n8n path below only for what that form doesn't do: an enquiry with a message or questions, a quote request, routing to a person, or a form that has to stay exactly as it is on the site. ## capture-leads-and-follow-up **What you get:** every enquiry on your website lands in Contacts and in front of you, answered the same day, never lost, never duplicated. **First, which form:** when the "lead" is someone asking for a guide, a price list or your news (name and email, no message), that is the hub's own form (`awesomate_crm_forms`, awesomate-funnels): use it and skip the rest of this recipe. Build this recipe when people write to you: a message, a question, details of a job. **Made of:** a WP page or `static-landing` page with a form, then the server-side forwarder, then an n8n webhook workflow that, with the Awesomate node, in this order: 1. adds or updates the person in Contacts (Contact, Create or Update), tagged, for example `web-enquiry`; 2. tells the owner: a task (Task, Give) when `features.tasks` is available, otherwise an email to the owner's own address; 3. records what happened (Contact, Record Event, `enquiry_received`, keyed on the forwarder's `event_key`, one per person per day, so a resubmit is recorded once). Last, so an event the hub refuses still leaves the person in Contacts and the owner told. **The reply to the lead** is a service email: it says the enquiry arrived and when to expect an answer, with no offer and no sign-up link. The owner makes it in the hub as an email series of kind service that starts on the `enquiry_received` event (Contacts, Email series, https://hub.awesomate.ai/contacts/series; awesomate-email "Starting an email series from what happened"), and approves it and switches it on there. It goes from the business's own sending name and skips anyone who asked to stop every email. Never send the lead anything from Gmail or SMTP in n8n: n8n can't see who unsubscribed or bounced. Until the owner's series is on, the owner's task or email is how the lead gets answered. **An enquiry is not a yes to marketing.** The workflow never puts anyone on a list (the node can't, on purpose). If the form also asks "send me your news", handle that tick as in newsletter-signup below. **Needs:** Support Plus+. Contacts, and the node's **Awesomate Hub** credential (awesomate-node.md, "Before you build"). An email credential in their n8n only when the owner's notice goes by email (no Tasks). For the reply: the business's sending set up (Contacts, Settings, Get ready to send) and a service series switched on. WP wiring per awesomate-n8n `references/wp-form-handler.md`. **Build order:** 1. awesomate-n8n: check the node and its credential, then the webhook workflow (Create or Update, the owner's notice, Record Event). Test with fake payloads and the owner's own address, using a tag and an event no live series starts on, or before such a series is switched on: a series can start on a tag or an event, and the test would send real email. 2. awesomate-credentials: an email key only when the notice goes by email and none exists (routes to n8n). 3. awesomate-app-builder (static page) or awesomate-hosting (WP page): form + forwarder per wp-form-handler.md; verify both hops end to end: the test person shows once on Contacts, People, with the tag, and on no list. 4. The owner, in the hub: the reply as a service series on `enquiry_received`, approved and switched on. 5. awesomate-seo: the page is public. **Without Contacts** (`features.contacts.available` false): the workflow saves the lead to a data table (deduped by email) and tells the owner. It may send the lead a plain acknowledgement from the owner's own email credential, saying only that the enquiry arrived; never a welcome, newsletter or offer. ## take-bookings **What you get:** customers pick a time on your site; it lands in your calendar with a confirmation email to both of you — no double bookings. **Made of:** WP/static page with a booking form → forwarder → n8n webhook workflow: check a slots data table (double-booking guard) → create the calendar event → send confirmations. **Needs:** Support Plus+. Google Calendar credential + email credential in their n8n (guided OAuth if missing). **Build order:** 1. awesomate-n8n — workflow + slots data table; test slot-taken and happy path. 2. awesomate-credentials — calendar/email credentials (routes to n8n). 3. awesomate-app-builder or awesomate-hosting — booking page + forwarder. 4. awesomate-seo — the page is public. ## customer-database-plus-simple-portal **What you get:** one place holding all your customers, and a login page where each customer sees their own details. **Made of:** Node app (`node-auth-sync` — signup/login built in) + its own app database (`awesomate_app_provision_db` — one Postgres per env, `DATABASE_URL` injected). Customer data lives in the app DB, never a data table. Optional n8n workflow for "new customer" email alerts. **Needs:** Support Plus+ (app building). No external credential to start; email credential only if alerts are wanted. **Build order:** 1. awesomate-app-builder — confirm name + stack, `awesomate_app_create`, scaffold, build on dev; awesomate-github backup immediately after scaffold. 2. awesomate-credentials — any secrets the app needs (encrypted, injected). 3. awesomate-n8n — optional alert workflow called from the app. 4. Promote dev → live only on explicit approval; awesomate-seo if public. ## quote-or-invoice-follow-up **What you get:** quotes and invoices that go quiet get a polite chaser automatically — you stop leaving money on the table. **Made of:** n8n scheduled workflow + data table holding each quote's status and last-chase date (the cursor + dedupe) + email credential. Source of quotes: a data table the owner updates, or an already-connected app from the credential inventory — verify, never assume a credential works. **Needs:** Support Plus+. Email credential. No page required. **Build order:** 1. awesomate-n8n — quotes data table + scheduled chaser workflow. 2. awesomate-credentials — email key if none exists. 3. Test with fake quotes ([TEST] subjects to the owner's own inbox); hand over the workflow URL and how to add/close a quote. ## newsletter-signup **What you get:** a sign-up box on your site; everyone who signs up is in Contacts and on your email list, by their own yes, with nothing to maintain. **Made of:** the hub's own sign-up form: `awesomate_crm_forms` `create` with `kind: 'signup'`, the list, and `optin` (single by default: ticking and sending joins at once; double: they confirm by email first), pasted onto a WP page, a `static-landing` page or any site builder with its snippet. The form's box and small print are the hub's words, from the list's own name and promise; the owner turns the form on at `review_url`. The awesomate-funnels skill has the whole recipe (page, list, form, turning it on, first test). **Needs:** Contacts and email (every plan), a list in the owner's words, and the business's sending set up (the form's `missing` says what is left). **Build order:** 1. awesomate-email: the list, in the owner's words, if they have none (`awesomate_crm_lists` `create`, after they agree the promise). 2. awesomate-funnels: the form (`awesomate_crm_forms create`, kind `signup`), then the snippet on the page; the owner turns it on and signs up once with their own address. 3. awesomate-email: offer a welcome series as a draft (`awesomate_crm_series` `{action: 'draft', template: 'welcome', list}`, Support Plus and above); it starts when someone joins the list, and the owner switches it on. 4. awesomate-seo: the page is public. **When the site's own form has to stay** (a theme's footer box the owner won't replace): the forwarder and an n8n workflow add the person to Contacts with a tag (`asked-for-news`) and tell the owner, who then sends each one a one-click invite from Contacts, People (**Add to email list**, "They asked to hear from us"); they join when they press Yes. Nothing in n8n can put anyone on a list, and no welcome email goes from n8n. That form's thank-you promises only what is sure: "Thanks, we've got it. We'll only add you to our list once you've confirmed by email." WP wiring: awesomate-n8n `references/wp-form-handler.md`. **Without Contacts** (`features.contacts.available` false): a data table (deduped by email) that keeps, for each person, the exact words they agreed to and when, so the owner can bring them into Contacts later with that record (awesomate-email `references/asking-permission.md`), plus a notice to the owner. No welcome or newsletter email from n8n. ## ai-chat-on-your-site **What you get:** a chat bubble on your site that answers customer questions about your business, day and night. **Made of:** n8n chat agent (chatTrigger `mode:"webhook"` → agent + model credential — awesomate-n8n `references/ai-agents.md`, incl. the chat widget embed) + the embed snippet on their WP or static page. Optional data table for FAQs the agent looks up. **Needs:** Support Plus+. A model credential (OpenRouter/OpenAI/Anthropic) in their n8n — none = stop and ask, never invent one. **Build order:** 1. awesomate-n8n — agent workflow per ai-agents.md; test conversations first. 2. awesomate-credentials — model API key if none exists (routes to n8n). 3. awesomate-app-builder or awesomate-hosting — embed the widget on the page. 4. Try it together on the live page; agree what the agent must NOT answer. ## order-status-notifications **What you get:** customers hear from you automatically the moment their order is received, shipped, or delayed — fewer "where's my order?" emails. **Made of:** n8n webhook workflow fed by their shop (WooCommerce webhook, server-to-server) or their own Node app → status-ledger data table (dedupe: one notification per order per status) → email to the customer. **Needs:** Support Plus+. Email credential. A shop or app that emits order events — if neither exists yet, this recipe comes after the shop does. **Build order:** 1. awesomate-n8n — webhook workflow + status data table; test every status. 2. awesomate-credentials — email key if none exists. 3. awesomate-hosting — point the WooCommerce webhook at the workflow (or wire the app's order code to call it). 4. Confirm a real test order notifies exactly once per status change. ## Offering these After understanding the business (first-run questions + inventory), offer the **2–3 most relevant recipes** as a one-line menu — "I could set up A, B, or C — which sounds most useful?" Never list all seven, never lead with the technology, and state the plan requirement before building. If none fit, ask one more short question instead of forcing a recipe.