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

# Implementation Comparison

> Replace your existing Truv integration with Argyle in a few easy steps.

<StepHikeCompact>
  <StepHikeCompact.Step step={1}>
    <StepHikeCompact.Details>
      [Sign up and log in](https://console.argyle.com/sign-in) to Argyle Console.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      [Sign up and log in](https://dashboard.truv.com/) to Truv Dashboard.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={2}>
    <StepHikeCompact.Details>
      [Retrieve Sandbox API keys](https://console.argyle.com/api-keys) from Argyle Console.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      Retrieve Sandbox API keys from Truv Dashboard.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={3}>
    <StepHikeCompact.Details>
      [Embed Argyle Link](/link/initialization):

      ```html theme={}
      <!-- Web example -->

      <!DOCTYPE html>
      <html>

      <head>
          <meta charset="utf-8" />
          <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
      </head>

      <body>
          <script src="https://plugin.argyle.com/argyle.web.v5.js"></script>
          <script type="text/javascript">
              const linkInstance = Argyle.create({
                  userToken: 'USER_TOKEN',
                  sandbox: true // Set to false for production environment.
              })
              linkInstance.open()
          </script>
      </body>

      </html>
      ```

      <Note>
        Optional [callbacks](/link/reference/callbacks) such as [`onAccountConnected`](/link/reference/callbacks#onaccountconnected) and [`onClose`](/link/reference/callbacks#onclose) can be added when embedding Argyle Link.
      </Note>
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      [Embed Truv Bridge](https://docs.truv.com/bridge-implementation#embedding-truv-bridge):

      ```html theme={}
      <!-- Web example -->

      <!DOCTYPE html>
      <html>

      <head>
          <script src="https://cdn.truv.com/bridge.js"></script>
      </head>

      <body>
              <script>
              const bridgeToken = 'BRIDGE_TOKEN'

              const bridge = TruvBridge.init({
                      bridgeToken: bridgeToken.bridge_token,
                      onSuccess:function(public_token, metadata){
                      console.log("token: ", public_token)
                      console.log("metadata: ", metadata)
                      }
                  })
              </script>
              <button type="button" id="button" onclick="bridge.open()">
              Connect
              </button>
      </body>

      </html>
      ```
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={4}>
    <StepHikeCompact.Details>
      Replace `USER_TOKEN` in step 3 with a user token.

      a.    (Argyle API) — [Create a user](/api-reference/users#create).

             {'>'}  Returns a user id.

             {'>'}  Returns the user token.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      Replace `BRIDGE_TOKEN` in step 3 with a bridge token.

      a.    (Truv API) — [Create a user](https://docs.truv.com/reference/users_create).

             {'>'}  Returns a user id.

      b.    (Truv API) — [Retrieve a link id](https://docs.truv.com/reference/link_exchange_token_flow).

      <Note>
        Use the `public_token` returned by the `onSuccess` callback in step 3.
      </Note>

             {'>'}  Returns a link id.

      c.    (Truv API) — [Create a bridge token](https://docs.truv.com/reference/users_tokens).

      <Note>
        Use the user id returned in step 4a.
      </Note>

             {'>'}  Returns the bridge token.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={5}>
    <StepHikeCompact.Details>
      Initialize Argyle Link.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      Initialize Truv Bridge.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={6}>
    <StepHikeCompact.Details>
      Connect a test account with [Sandbox credentials](/overview/sandbox-testing#connect-sample-users).
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      Connect a test account with [Sandbox credentials](https://docs.truv.com/quickstart-guide#adding-link-to-app-in-sandbox-environment).
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={7}>
    <StepHikeCompact.Details>
      (Argyle API) — [Retrieve identity information](/api-reference/identities#list).

      <Note>
        Filter by the user id returned in step 4.
      </Note>

      ```json theme={}
      // Example Argyle identity object:

      {
          "id": "0153b145-7ab9-bea2-cc16-a8b71328942f",
          "account": "0187c66e-e7e5-811c-b006-2232f00f426a",
          "address": {
              "city": "New York",
              "line1": "852 North W St",
              "line2": "Apt 221",
              "state": "NY",
              "country": "US",
              "postal_code": "10014"
          },
          "first_name": "Sarah",
          "last_name": "Longfield",
          "full_name": "Sarah Longfield",
          "birth_date": "1980-10-30",
          "email": "sarah@email.com",
          "phone_number": "+12125555555",
          "picture_url": "www.argyle.com/logofoldername",
          "employment_status": "active",
          "employment_type": "full-time",
          "job_title": "Store Manager",
          "ssn": "522-09-1191",
          "marital_status": "Married filing jointly",
          "gender": "Female",
          "hire_date": "2020-04-08",
          "termination_date": null,
          "termination_reason": null,
          "employer": "Whole Goods",
          "base_pay": {
              "amount": "58024.50",
              "period": "annual",
              "currency": "USD"
          },
          "pay_cycle": "semimonthly",
          "platform_ids": {
              "employee_id": "OB238HDW5",
              "position_id": "6ELL4O7PM",
              "platform_user_id": "JLH7B9V6O6YGN9O7"
          },
          "created_at": "2023-01-30T12:53:24.561Z",
          "updated_at": "2023-01-30T12:55:06.478Z",
          "metadata": {}
      }
      ```
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      (Truv API) — [Retrieve identity information](https://docs.truv.com/reference/link-identity).

      <Note>
        Query by the link id returned in step 4.
      </Note>

      ```json theme={}
      // Example Truv identity object:

      {
          "id": "48427a36d43c4d5aa6324bc06c692456",
          "created_at": "2022-06-07T15:00:00Z",
          "updated_at": "2022-06-31T15:00:00Z",
          "first_name": "John",
          "last_name": "Doe",
          "full_name": "John Doe",
          "middle_initials": "K",
          "email": "john.doe@example.com",
          "ssn": "123456789",
          "date_of_birth": "1992-03-03",
          "home_address": {
              "street": "1 Morgan Ave",
              "city": "Los Angeles",
              "state": "CA",
              "zip": "90210",
              "country": "US"
          }
      }
      ```
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={8}>
    <StepHikeCompact.Details>
      Connect a real account:

      a.    Change `sandbox` to `false` in step 3.

      b.    Repeat steps 4-7.

             {'+'}  Use Production API keys.

             {'+'}  Use real payroll credentials in step 6.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      Connect a real account:

      a.    Repeat steps 4-7.

             {'+'}  Use Production API keys.

             {'+'}  Use real payroll credentials in step 6.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>

  <StepHikeCompact.Step step={9}>
    <StepHikeCompact.Details>
      (Argyle API) — Subscribe to webhooks:

      [`identities.added`](/api-reference/identities-webhooks/added) — Sent when identity information is available after a new account connection.
    </StepHikeCompact.Details>

    <StepHikeCompact.Details>
      (Truv API) — Subscribe to webhooks:

      [`profile-created`](https://docs.truv.com/reference/identity-1#identity-profile-created) — Sent when identity information is available after a new account connection.
    </StepHikeCompact.Details>
  </StepHikeCompact.Step>
</StepHikeCompact>
