Prompt Library

Make.com AI prompts for classify, extract, summarise and draft

30 copy-paste prompts

Paste each prompt into the AI module you already added. Replace [MODULE NAME] with that module's name on the canvas. Do not invent module names Make does not show.

In short: This page contains 30 copy-paste ready prompts, organized into 6 categories with a description and pro tip for each. The first 5 prompts are free instantly, no signup needed. Drafted with AI writing assistance and checked against our editorial policy.

Louis Corneloup
By Louis Corneloup · Founder, Techpresso
Last updated ·Drafted with AI assistance (how we make prompts)

Classify and Route

5 prompts

Inbox into a closed category list

1/30

✨ What it does

Classifies bundle text into one label from your closed list, with a short evidence quote. Unmatched text returns a tag so the router does not invent a folder.

This prompt runs inside [MODULE NAME] in a Make.com scenario. Classify the incoming bundle text into one label from [CATEGORY LIST]. Text: {{[BUNDLE TEXT MAPPING]}}. Return a single line: label then a 15 word evidence quote copied from the text. If none of the labels fit, return [VERIFY] as the label and do not pick a neighbour. Do not invent a label, a folder or a mailbox I did not list. Downstream router will read only the label token before the first space.

💡

Pro tip: Put the same label strings in the router filters that you paste into the category list.

Lead quality from form fields

2/30

✨ What it does

Scores a form bundle high, medium or low from named fields only. Empty required fields block the score so the router does not send a hollow lead down a paid route.

Inside [MODULE NAME], score this form bundle as high, medium or low fit. Fields you may read: [FORM FIELD NAMES]. Values arrive as {{[FIELD MAPPINGS]}}. Use only those fields. Output JSON with keys fit, reasons (max three, each under 12 words). If a named field is empty, set fit to [VERIFY] and skip scoring. Do not invent company size, budget or a buying role. Do not name another Make module. This result feeds a router with three routes named high, medium and low.

💡

Pro tip: Map every form field you listed, including empty ones, or the module never sees the gap.

Language then queue

3/30

✨ What it does

Returns one allowed language code and the matching queue name from your map. Mixed or tiny text is tagged, so a later router does not open a queue you do not staff.

In [MODULE NAME], read {{[MESSAGE TEXT]}} and return the language code from this allowed set only: [LANGUAGE CODES]. Output one token, lowercase. If the text mixes languages or is too short to tell, return [VERIFY]. Do not invent a language, a locale or a translator module. After the code, on a second line, name the queue from [QUEUE NAMES BY LANGUAGE] that matches, or write unmatched. Never output a queue for a code you did not return on line one.

💡

Pro tip: Keep the code list as short as the queues you actually run.

Tone to a human queue

4/30

✨ What it does

Sends a message to a human queue only when a signal you defined is quoted from the text. Empty messages are tagged, and no VIP tag is created from thin air.

Run in [MODULE NAME]. Decide whether {{[CUSTOMER MESSAGE]}} should go to a human queue now. Signals that mean human: [HUMAN SIGNALS]. Output a table with one row: Decision (human or stay), Signal matched, Quote under 20 words. If no signal matches, Decision is stay. If the message is empty, Decision is [VERIFY]. Do not invent anger, a threat or a VIP tag I did not define in [HUMAN SIGNALS]. Do not mention other modules on the canvas.

💡

Pro tip: Write signals as phrases you have seen in real tickets, not mood adjectives.

Single label versus many

5/30

✨ What it does

Applies one label or up to three from your list, according to the mode you set. A blank mode is tagged, so the scenario does not silently switch between single and multi.

Inside [MODULE NAME], assign labels from [LABEL LIST] to {{[ITEM TEXT]}}. Mode: [SINGLE OR MULTI]. In single mode return one label. In multi mode return up to three labels, comma separated, still from the list. If nothing fits, return [VERIFY]. Do not invent a label. Do not output both modes. Include a second line that restates the mode you used so the next filter can assert it. If [SINGLE OR MULTI] is blank, return [VERIFY] on line one and ask me to set the mode rather than inventing one.

💡

Pro tip: Use single mode when a router needs one path. Use multi only when a later iterator expects a list.

Extract Fields

5 prompts

Invoice fields from an email body

6/30

✨ What it does

Pulls named invoice fields from an email body into JSON with those keys only. Unsupported keys are tagged, which stops a later module from posting a number you never received.

This runs in [MODULE NAME]. From {{[EMAIL BODY]}} extract only these names: [FIELD NAMES]. Return JSON with exactly those keys. Copy digits and dates as written. If a key has no support in the body, set it to [VERIFY]. Do not invent a tax line, a currency or an invoice number. Do not add keys. The next module maps these keys by name, so a guessed invoice number would post a fake bill. Keep values on one line each with no commentary.

💡

Pro tip: Name the keys as the next module already expects them, including underscores.

Meeting facts from invite text

7/30

✨ What it does

Extracts start, end, location and attendees from invite text in the timezone you name. Missing facts and a blank timezone are tagged, so a calendar module does not create a ghost event.

In [MODULE NAME], read {{[INVITE TEXT]}} and fill keys start_local, end_local, location, and attendees from [TIMEZONE]. Output JSON with those four keys. Use only facts written in the invite. If a key is missing, set it to [VERIFY]. Do not invent a conference link, a room or a person. Do not convert timezones unless [TIMEZONE] is filled; if it is blank, leave times as written and tag start_local [VERIFY]. No extra keys.

💡

Pro tip: Paste a real invite once, including the ugly footer, so location parsing matches production.

SKU list from an order note

8/30

✨ What it does

Builds a SKU and qty array from an order note using your pattern. Unmatched tokens are dropped, and an empty result is tagged so an iterator does not skip the bundle without a trace.

Inside [MODULE NAME], pull SKUs from {{[ORDER NOTE]}} that match [SKU PATTERN]. Return a JSON array of objects with keys sku and qty. Qty must be a number copied from the note; if qty is missing, set qty to [VERIFY] and still include the sku if it matches the pattern. Do not invent a SKU, a size or a warehouse. Drop tokens that do not match [SKU PATTERN]. If the array would be empty, return [VERIFY] as the whole result rather than an empty list the iterator would skip silently.

💡

Pro tip: Give the pattern as a simple example SKU, not a dense expression, unless your team already uses one.

Address parts from a form blob

9/30

✨ What it does

Splits a form address blob into five named parts using your country format notes. Missing parts and unparseable lines are tagged, and typos are left alone for a human to fix.

Run in [MODULE NAME]. Split {{[ADDRESS BLOB]}} into keys line1, city, region, postal, country using [COUNTRY FORMAT NOTES]. Return JSON with those five keys. Copy spelling from the blob. If a part is absent, set it to [VERIFY]. Do not invent a postal code, a region or a country. Do not fix typos. If the blob is a single line with no commas or breaks, still split only when [COUNTRY FORMAT NOTES] tell you how; otherwise tag every key except line1, which gets the whole blob.

💡

Pro tip: Keep format notes to one country at a time. Mixed rules make silent swaps.

Names from a signature block

10/30

✨ What it does

Reads an email signature into name, title, company and phone, tagging blanks. It will not invent a phone or borrow a From header unless you mapped that header in.

In [MODULE NAME], read {{[EMAIL SIGNATURE]}} and return JSON with keys full_name, title, company, phone. Use lines that look like a signature, not the body above it. If a key is not present, set it to [VERIFY]. Do not invent a phone, a job title or a company. Do not pull a name from the From header unless I mapped it as [FROM HEADER VALUE] and it matches the signature. If the signature is missing, return all four keys as [VERIFY] and stop.

💡

Pro tip: Map the signature HTML as text first, or the module will see tags instead of lines.

Summarise Bundles

5 prompts

Long ticket to a Slack blurb

11/30

✨ What it does

Cuts a ticket body to 80 words for Slack with who, the ask and a date from the text. Missing dates are tagged, and no severity is added for the channel.

This prompt sits in [MODULE NAME] before a Slack module. Summarise {{[TICKET BODY]}} in at most 80 words for [SLACK CHANNEL PURPOSE]. Include: who, the ask, and any date written in the ticket. Do not invent a severity, a customer tier or a deadline. If no date appears, write [VERIFY] where the date would go. Output plain text, no bullet characters that Slack would treat as a list unless I set [ALLOW LIST] to yes. Put the ticket id [TICKET ID] on the first line.

💡

Pro tip: Map the ticket id from the helpdesk module so the blurb always links back.

Daily stack of form replies

12/30

✨ What it does

Turns an aggregated day's form replies into a 120 word digest of themes, oddities and follow up. The count comes from you, and an empty aggregate is tagged instead of summarised.

In [MODULE NAME], summarise today's form replies. Replies (aggregated text): [PASTE OR MAP AGGREGATED REPLIES]. Count of replies I already computed: [REPLY COUNT]. Write a 120 word digest with three headings: Themes, Oddities, Follow up. Do not invent a count; use [REPLY COUNT] or write [VERIFY] if it is blank. Do not invent a quote. Oddities must be paraphrases of lines that appear in the aggregated text. If the aggregated text is empty, return [VERIFY] and stop.

💡

Pro tip: Run an aggregator before this module and map both the text and the bundle count.

Change list from two versions

13/30

✨ What it does

Lists up to 10 factual changes between two texts with old and new snippets. Identical or empty inputs are tagged or marked unchanged, with no legal meaning added.

Inside [MODULE NAME], compare [OLD TEXT] with [NEW TEXT] and list factual changes only. Output a numbered list of at most 10 lines, each: field or clause, old snippet, new snippet. If you cannot point to both snippets, skip that line. Do not invent a change, a legal meaning or a risk. If the two texts are identical, return the line no factual changes, do not invent a delta. If either text is empty, return [VERIFY]. This is a reading aid, not advice.

💡

Pro tip: Paste the two versions as plain text. Formatting-only diffs are noise; ask the module to ignore whitespace if you need to.

Error cluster from scenario logs

14/30

✨ What it does

Groups pasted error lines into at most five clusters with a copied sample and a short next check. Counts that you did not supply stay tagged, and no module name is guessed.

Run in [MODULE NAME]. Here are error messages from failed bundles: [ERROR LINES]. Group them into at most five clusters. For each cluster give: sample message (copied), count if I supplied counts in [ERROR LINES], and a 12 word likely next check. If a count is not in the lines, write [VERIFY] instead of a number. Do not invent a module name, an operation id or a root cause. If [ERROR LINES] is empty, return [VERIFY] and stop.

💡

Pro tip: Copy the error strings from scenario history, not a paraphrase from chat.

Call notes for a CRM field

15/30

✨ What it does

Rewrites call notes into one 70 to 90 word CRM paragraph using only the notes and the account name. A missing outcome becomes a tag, and the paragraph has no line breaks.

In [MODULE NAME], turn {{[CALL NOTES]}} into a CRM-ready paragraph of 70 to 90 words. Allowed facts: only what appears in the notes plus [ACCOUNT NAME]. Do not invent an amount, a close date or a competitor. If the notes lack an outcome, write [VERIFY] as the last sentence. Output a single paragraph, no headings, because the CRM field rejects line breaks. Do not mention Make, this module, or [MODULE NAME] in the paragraph.

💡

Pro tip: Trim the notes to the human's words before mapping them in. Boilerplate hides the outcome.

Like these prompts? There are full tutorials behind them.

Learn the workflows, not just the prompts. Easy-to-follow tutorials inside AI Academy, and the library keeps growing.

Try AI Academy Free

Draft Replies

5 prompts

Reply after a classify step

16/30

✨ What it does

Drafts a 90 word reply that names the already chosen category and asks one question. A tagged or blank category holds for a human, and no order status is invented.

This draft runs in [MODULE NAME] after a classify step. Category already chosen: [CATEGORY]. Customer message: {{[MESSAGE]}}. Write a reply of about 90 words in [TONE]. Open with the category in plain language. Ask one question. If [CATEGORY] is [VERIFY] or blank, do not draft a reply; return the line hold for human. Do not invent a fix, a policy or an order status. Do not name other modules. Close with [SIGN OFF] or, if that is blank, write [VERIFY] in the sign-off line.

💡

Pro tip: Map the classify output into [CATEGORY] exactly, including the tag, so hold works.

Internal alert after extract

17/30

✨ What it does

Writes a 60 word internal alert from extracted JSON, mentioning only keys you listed. Missing keys are spoken as gaps, and the first line is the id or a tag.

In [MODULE NAME], draft an internal alert of at most 60 words for [TEAM CHANNEL]. Extracted JSON: [EXTRACTED JSON]. Mention only keys from [KEYS TO MENTION]. If a mentioned key is missing or equals [VERIFY], say so in the alert rather than filling it. Do not invent a severity or a dollar amount. First line must be the account or order id from [ID KEY], or [VERIFY] if that key is absent. Plain text, one paragraph after the first line.

💡

Pro tip: Keep the id on its own first line so a mobile teammate can copy it.

Follow-up when a field is tagged

18/30

✨ What it does

Asks the customer, in 70 words, only for the keys the previous extract tagged. An empty tagged list stops the send, so you do not email a person with nothing to ask.

Run in [MODULE NAME]. The previous extract left these keys as [VERIFY]: [TAGGED KEYS]. Draft a 70 word email to [CUSTOMER NAME] that asks only for those keys, in a numbered list. Do not ask for anything else. Do not invent a reason they were missing. If [TAGGED KEYS] is empty, return the line nothing to ask and stop. Subject line: one line using [SUBJECT PREFIX] plus the first tagged key. Body must not mention Make, scenarios or [MODULE NAME].

💡

Pro tip: Send this only on a router path where tagged keys exist, and keep the prefix stable for threading.

Rejection note for low confidence

19/30

✨ What it does

Writes a 50 word internal rejection note from the model note and a bundle snippet, with the customer line forced to none. Empty snippets are tagged, and no fraud claim is added.

Inside [MODULE NAME], the classify result was [FIT OR LABEL] with note [MODEL NOTE]. Draft a 50 word internal note explaining why this bundle should not proceed, for [OPERATOR NAME]. Use only the model note and the bundle snippet [BUNDLE SNIPPET]. Do not invent a policy, a blacklist or a fraud claim. If the snippet is empty, write [VERIFY] and do not draft a customer-facing line. Output two parts: Internal note, and Customer line (must be the single word none).

💡

Pro tip: Keep customer-facing silence here. A later module can draft a kind delay if you choose.

Human task from a held bundle

20/30

✨ What it does

Turns a held bundle into an 80 to 110 word human task with a three-item checklist. A blank return path is tagged, and no due date is invented for the queue.

This sits in [MODULE NAME] on the hold path. Create a task description of 80 to 110 words for [TASK TOOL OR QUEUE]. Bundle summary: [BUNDLE SUMMARY]. Why it was held: [HOLD REASON]. Include: what to check, which field to repair, and where to send it after repair using [RETURN PATH]. If [RETURN PATH] is blank, write [VERIFY] in that sentence. Do not invent a due date or a priority. Do not mention [MODULE NAME]. End with a yes or no checklist of three items drawn from the hold reason.

💡

Pro tip: Name the queue as the operator sees it, not as the module is labelled on the canvas.

Scenario Contracts

5 prompts

Bundle keys the next module needs

21/30

✨ What it does

Locks the AI module's JSON to required and optional keys you named, with a short example. Extra keys are forbidden in the instruction so the next module's mapping stays stable.

Write the prompt for [MODULE NAME] so its output JSON contains only [REQUIRED KEYS] and optional [OPTIONAL KEYS]. Instruct it to copy values from {{[SOURCE MAPPINGS]}}. Required keys with no source become [VERIFY]. Optional keys with no source are omitted. Do not invent a key. Add one example object using placeholders, then one line: extra keys will break [NEXT MODULE ROLE]. Keep the whole prompt under 170 words so it fits the module's prompt field.

💡

Pro tip: Open the next module's mapping panel and copy the key names from there.

Iterator item shape

22/30

✨ What it does

Shapes list text into a JSON array with a fixed item key set for an iterator. Non-lists are tagged as a whole, so you do not iterate a single object by accident.

In [MODULE NAME], turn {{[LIST TEXT]}} into a JSON array for an iterator. Each item must have keys [ITEM KEYS] and nothing else. If a source row lacks a required key, still emit the item but set that key to [VERIFY]. Do not invent rows. If the source is not a list, return [VERIFY] as the whole output rather than wrapping a single object in an array of one. After the array, do not add commentary. The iterator will run once per item.

💡

Pro tip: Test with three rows, then with one row, then with a paragraph that is not a list.

Router filter phrases

23/30

✨ What it does

Forces the module's first line to one exact router token, or a tag when none apply. Synonyms are banned so equals-filters on the router do not miss.

Write the instruction for [MODULE NAME] so its first line is always one of these exact tokens: [ROUTER TOKENS]. Second line may be a 20 word reason copied from {{[SOURCE TEXT]}}. If none of the tokens apply, first line must be [VERIFY]. Do not invent a token. Do not put punctuation on the first line. The Make router filters will compare the first line with equals, so a synonym would miss every route. Keep the instruction under 140 words.

💡

Pro tip: Paste the token list from the router filter values, character for character.

Error handler message

24/30

✨ What it does

Drafts a 40 to 60 word operator message on the error path, quoting the error and naming the bundle. Empty error text is tagged, and the scenario is never declared fixed.

This prompt is for [MODULE NAME] on an error handler path. Inputs: failed module role [FAILED ROLE], error text [ERROR TEXT], bundle id [BUNDLE ID]. Write a 40 to 60 word operator message that quotes the error text, names the bundle id, and states the next manual check from [NEXT CHECKS]. If [ERROR TEXT] is empty, write [VERIFY] in place of the quote. Do not invent a cause. Do not claim the scenario is fixed. Output plain text for an email or Slack module.

💡

Pro tip: Map the real error string from the handler, not a generic 'it failed' label.

Data store key lock

25/30

✨ What it does

Computes a data store key that must match your pattern, with a value object limited to allowed keys. Bad keys are tagged so a store module does not create a junk namespace.

In [MODULE NAME], produce the key and value for a data store write. Allowed key pattern: [KEY PATTERN]. Value keys allowed: [VALUE KEYS]. Source: {{[SOURCE BUNDLE]}}. If the computed key does not match the pattern, output [VERIFY] as the key and do not emit a value. Do not invent a key, a namespace or a TTL. If a value key is missing in the source, set it to [VERIFY] inside the value object. Return JSON with keys store_key and store_value only.

💡

Pro tip: Put the same pattern in a filter before the store write as a second lock.

Go from copy-pasting to actually mastering AI.

AI Academy: hands-on tutorials on ChatGPT, Claude, Midjourney, and many other tools. New tutorials are added regularly.

Start Your Free Trial

QA Before Go Live

5 prompts

Dry run on one sample bundle

26/30

✨ What it does

Runs your AI prompt against one sample bundle as a table of copied versus guessed keys. Guessed rows are tagged, which tells you whether the prompt is safe to paste into the module.

Dry-run the prompt I use in [MODULE NAME] against one sample, without claiming it ran in Make. Prompt: [PASTE PROMPT]. Sample bundle: [SAMPLE BUNDLE]. Output a table: Output key, Value, Copied or guessed. Mark guessed rows as [VERIFY]. Do not invent a module result. End with a go or hold sentence for wiring this prompt into [MODULE NAME]. If the sample lacks a field the prompt requires, say which field, not a story about the scenario.

💡

Pro tip: Use a bundle exported from a real execution, including empty fields.

Hunt invented keys

27/30

✨ What it does

Audits an AI module's output against allowed keys and rewrites invented keys to tags. Non-JSON output is tagged and quoted so you can see what the mapping panel would refuse.

Compare input and output of [MODULE NAME]. Input: [INPUT JSON]. Output: [OUTPUT JSON]. Allowed output keys: [ALLOWED KEYS]. List every output key as allowed-copied, allowed-empty, or invented. Rewrite the output JSON, replacing invented values with [VERIFY] and dropping invented keys. Do not add new keys while rewriting. If the output is not JSON, return [VERIFY] and quote the first 40 words. This check is for the mapping panel, not a live run.

💡

Pro tip: Paste the output from the module's execution inspector, not from a chat window.

Empty bundle behaviour

28/30

✨ What it does

Writes an 80 word prompt fragment that holds, skips or uses your named token when mapped text is empty. A blank choice is tagged, so the module does not invent a default.

Tell me what [MODULE NAME] should output when the mapped text is empty. Desired behaviour: [HOLD SKIP OR TOKEN]. Write a 80 word prompt fragment I can append that implements that behaviour, using [VERIFY] when the behaviour is hold. Do not invent a default value unless [HOLD SKIP OR TOKEN] names one, and even then copy it exactly. Do not mention other modules. If the desired behaviour is blank, return [VERIFY] and ask me to choose hold, skip or a token.

💡

Pro tip: Test the empty path on purpose. Happy-path samples hide this failure.

Mapping table versus a real bundle

29/30

✨ What it does

Matches prompt placeholders to real bundle keys as mapped, missing or extra. Missing keys are tagged, and the three most dangerous gaps are named so you can fix mappings first.

Build a mapping checklist for [MODULE NAME]. Prompt placeholders: [PLACEHOLDER LIST]. Real bundle keys: [BUNDLE KEYS]. Output a table with columns Placeholder, Bundle key, Status (mapped, missing, extra). For missing, write [VERIFY] in Bundle key. Do not invent a key that is not in [BUNDLE KEYS]. After the table, list the three placeholders that would break the scenario if left missing. Keep the whole answer under 200 words.

💡

Pro tip: Copy bundle keys from one successful execution's output bundle, not from the module help text.

Before and after a prompt edit

30/30

✨ What it does

Diffs old and new prompts on one sample by key changes, flagging new keys outside your allowed list. The close is keep old, keep new or edit again, with no fake winner score.

Compare two prompts for the same [MODULE NAME] on the same sample. Old prompt: [OLD PROMPT]. New prompt: [NEW PROMPT]. Sample: [SAMPLE BUNDLE]. For each, imagine the JSON (do not claim you executed Make). Table: Key, Old value type, New value type, Change (same, added, removed, retagged). If a new key is not in [ALLOWED KEYS], mark it [VERIFY] as a possible invention. Do not invent a winner. End with keep old, keep new, or edit again, in one sentence.

💡

Pro tip: Change one instruction per edit. Two changes at once hide which line caused a new key.

Free tool

Prompt Optimizer

Turn a rough idea into a structured, professional AI prompt.

Try it free →

Frequently Asked Questions

Paste into the AI module you already placed on the canvas. Replace [MODULE NAME] with the label Make shows on that module. These prompts describe jobs (classify, extract, summarise, draft). They do not invent a module Make does not list in your scenario.
Make scenarios break when a step names an app or action that is not on the canvas. Keep module names as placeholders you fill from your own scenario. If a job needs a module you do not have, add it in Make first, then paste the prompt.
Use Make's mapping panel to insert real bundle variables where the prompt shows a mapped field. Leave the square-bracket names as comments of what to map. Run one execution and confirm each mapped field in the inspector before you turn the scenario on.
It is a gap tag, not a value to store. Put a router after the AI module that sends tagged bundles to a hold path or a human task. Do not write a tagged field into a CRM, sheet or email until a person replaces it.
No. Give each AI module one job and one output shape. A classify prompt should return a label token a router can match. An extract prompt should return JSON keys the next module already maps. Mixing the two makes both downstream steps fragile.

Prompts are the starting line. Tutorials are the finish.

A growing library of hands-on tutorials on ChatGPT, Claude, Midjourney, and many other AI tools. New tutorials are added regularly.

Start 7-Day Free TrialCancel anytime.
Explore AI for Product Managers