Install in two minutes

One script tag. Your form keeps working exactly as it does now, and if our service is ever unavailable it simply submits as normal.

1. Add the snippet

Paste this just before the closing </body> tag on the page with your contact form, using the site key from your dashboard.

<script src="https://junkgate.com/jg.js"
        data-key="YOUR_SITE_KEY"></script>

That is the whole installation. JunkGate finds the forms on the page, adds the hidden field it needs, and checks each submission as it is sent.

2. Confirm it is working

Submit your own form once. It should behave exactly as it always has. Open your dashboard and the submission will be listed with a verdict and a reason.

Your site starts in watch-only, so nothing is blocked. You are watching the filter make decisions, not letting it act on them yet.

Options

AttributeWhat it does
data-keyRequired. Your site key.
data-forms A CSS selector, if you only want specific forms protected. Defaults to every form on the page.
data-jg-success Put this on a form, pointing at your own success element, and we will show yours instead of a default message.

Filtering your inbox as well

Contact forms are not the only way junk arrives. On any paid plan you also get a private forwarding address for each site.

  1. Copy the forwarding address from your dashboard.
  2. Add one forwarding rule in your own mail client pointing at it.
  3. Genuine mail arrives as normal. Junk waits in your dashboard.
We never ask for your mailbox password, and we never connect to your mail account. You forward to us, which means you stay in control and can stop it at any moment by deleting that one rule.

Sending your own submissions

If you run a custom backend rather than an HTML form, post to the endpoint directly and use the deliver field in the response to decide what to do.

POST https://junkgate.com/v1/submit
Content-Type: application/json

{
  "key":     "YOUR_SITE_KEY",
  "name":    "Sarah Nguyen",
  "email":   "sarah@example.com",
  "subject": "Quote request",
  "message": "Do you service commercial vans?"
}

The response is always a 200, even if something on our side went wrong, because a problem of ours must never surface as a broken form on your site.

{ "ok": true, "id": "…", "deliver": true }

deliver: true means send it on as normal. false means we are holding it for review. If you ever see "unchecked": true, we could not reach a decision and you should treat the message as genuine.