# Integration modes

> The script can check the order at the button, or only collect and leave the whole decision to your server.

This is one page of the Antiro docs (https://docs.antiro.io/sdk/modes). Every page in one file: https://docs.antiro.io/llms-full.txt

## Compare the two modes

|  | Submit check | Collect only |
| --- | --- | --- |
| Turned on by | Default | `data-forms="off"` |
| At the order button | The script holds the order for a moment and checks it | The script does not touch the button |
| A refused order | Never leaves the page | Reaches your server, which refuses it |
| Value for `sdk_expect` | `forms` | `collect` |

Do not confuse these with [protection modes](https://docs.antiro.io/api/decisions#protection-modes), which set whether Antiro’s decisions take effect.

## Submit check

This is the default, and the right choice for most stores. The script holds the order for a moment when the shopper presses the button, then lets it continue. A refused order is never sent.

## Collect only

The script leaves the order button alone, and your server decides every order. Use it if your checkout cannot accept a held submit.

**Collect only**

```html
<script
  src="https://js.antiro.io/v2/antiro.js"
  data-key="pk_xxxxx"
  data-forms="off"
  async></script>
```

## Tell Antiro which mode you use

Once Antiro knows that your pages run the script, an order that arrives without a reference is treated as suspicious from the very first order. This is what catches bots that post straight to your server. You can say it in two ways:

-   **For each order:** send [`sdk_expect`](https://docs.antiro.io/api/assessments#body-parameters) with the order check, as `forms` or `collect`. Any other value is ignored.
-   **For the whole store:** choose how the script is installed on the [API keys](https://dashboard.antiro.io/dashboard/api-keys) page.

The value sent with an order wins for that order. If you state nothing, Antiro works it out from the orders it receives.

> **Install the script first**
>
> Once you state a mode, every order without a reference is held for review at least. On a page that does not run the script, that means every genuine order.

## Strict mode

Strict mode goes one step further: an order that carries no reference at all is refused instead of held for review. A shopper on a page that runs the script always has a reference. Scripts that post orders straight to your server have none.

-   **For each order:** send [`sdk_required`](https://docs.antiro.io/api/assessments#body-parameters) as `true` together with `sdk_expect`. Without `sdk_expect` it is ignored.
-   **WooCommerce:** the plugin’s **Strict mode** setting, on by default since version 1.2.0.

> **Only where every order page runs the script**
>
> When your server checks an order again because Antiro did not answer in time, send `sdk_required` as `false`. A delay on Antiro’s side must never refuse a genuine order.
