> ## Documentation Index
> Fetch the complete documentation index at: https://docs.extractor.live/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect an Action Provider

> Grant an Action Provider the on-chain permissions it needs to execute functions on your smart contract — wiring up a wallet as an automated signer.

An Action Provider can only execute transactions on a smart contract if it has been explicitly granted a role on that contract. This is a one-time on-chain setup.

## Steps

<Steps>
  <Step title="Copy the Action Provider address">
    Go to **Action Providers**, click on the provider you want to connect, and copy its address using the **Copy** icon next to the address.

    <Tip>
      You can also click the external link icon to view the address on a block explorer.
    </Tip>
  </Step>

  <Step title="Grant the required role on your contract">
    Using your contract's admin interface (e.g., Etherscan, your own frontend, or a script), call the function that grants a role to the provider's address.

    Common roles depending on your contract:

    * `grantRole(PAUSER_ROLE, <provider_address>)`
    * `grantRole(OPERATOR_ROLE, <provider_address>)`
    * `addPauser(<provider_address>)`

    <Warning>
      Do **not** grant `OWNER_ROLE` or equivalent. This would give the provider (and Extractor) full administrative control over your contract. Use only the minimum permissions required for the actions you want to automate.
    </Warning>
  </Step>

  <Step title="Verify the connected actions">
    Back in Extractor, open the provider's detail page and click the **Connected actions** tab. Actions that use this provider will appear here once configured.
  </Step>
</Steps>

## What's next

Now that the provider has the right on-chain permissions, make sure it has enough balance to pay for gas:

* [Deposit funds into the provider](/smart-contract-actions/action-providers/deposit)
