Skip to main content

Register an OAuth application

A personal access token is a credential for you. An OAuth application is a credential for software — it lets an app send your users to SKU.io, ask them to approve a specific list of permissions, and get its own token back when they agree. Nobody has to email a secret around, and any user can withdraw access later without breaking anyone else.

Register one when you're building an integration, hooking up an automation platform, or handing a connector to an outside developer. If you only need a credential for a script you run yourself, create a personal access token instead — it's far less work.

Before you begin

  • This page is for administrators. You need to be a power user with permission to manage OAuth applications; if Settings → Developer → OAuth Applications isn't in your menu, you don't have it.
  • Have the developer's redirect URI to hand — the HTTPS address SKU.io sends the user back to after they approve. You can't finish the form without at least one, and you can add more later.
  • The Client Secret is shown once, on the screen right after you register. Have somewhere safe to put it.
  • Registering the application does not grant it anything. It can only act once a user completes the authorization flow and approves the scopes it asks for.
  • The screenshots below come from a demonstration account with sample applications. Your own names, URLs, and client IDs will differ.

Steps

1. Open the OAuth Applications page

Go to Settings → Developer → OAuth Applications.

The OAuth Applications page listing three registered applications with their client IDs, redirect URIs, and status

Every application registered on the account is listed here, active and revoked alike.

2. Read the setup instructions

Expand Setup instructions for developers (API clients and automation platforms) at the top of the page. This is the panel to send the developer to — it carries the two endpoint URLs their app needs.

The expanded setup panel showing three numbered steps and the Auth URL and Token URL for this account

EndpointPurpose
Auth URL/oauth/authorizeWhere the app sends the user to sign in and approve
Token URL/oauth/tokenWhere the app exchanges the returned code for an access token

Both are shown as full URLs for your account, so they can be copied straight into a client's configuration.

Below the steps, two worked examples fill in the fields the common tools ask for — Postman, for testing the flow yourself, and a generic automation platform, for handing to a no-code connector.

Worked example tables for Postman and an automation platform, listing grant type, callback URL, auth URL, token URL, and scope

Under those sits the full Available Scopes table. Send it to the developer along with the credentials — scopes are space-separated in an OAuth request, and an app should only ask for the ones it genuinely needs. See the API scopes reference.

3. Start a new application

Click New OAuth application.

The OAuth Applications header with the New OAuth application button on the right

The New OAuth application dialog with empty name, client type, redirect URI, and revocation webhook fields

4. Name the application

Type a name into Application Name — between 3 and 100 characters.

This is the name your users read on the consent screen when the app asks for access, and the name it appears under in their Connected Apps list. Use what the app is actually called, not an internal codename: "Acme Order Sync" tells a user what they're approving; "integration-v2" doesn't.

5. Choose the client type

Confidential and Public decide how the app proves its identity.

TypeChoose it whenHow it authenticates
Confidential (server-side, has secret)The app runs on a server you or the developer control — a backend service, a scheduled sync, a hosted connectorA Client Secret it keeps private
Public (PKCE, browser-based, no secret)The app runs where its code is visible — a single-page app, a mobile app, a marketplace extensionThe PKCE flow, with no secret at all

The rule is whether the app can keep a secret. Anything running in a browser or shipped to a device can't — its code can be read — so those use Public and PKCE. When in doubt, ask the developer where the token exchange happens: on their server, choose Confidential.

This choice is set at registration and doesn't appear when you edit the application later.

6. Add the redirect URIs

Enter the address SKU.io should return the user to after they approve, then use + Add URI if the app needs more than one — typically a production callback and a staging one.

Each must be a valid HTTPS URL, and at least one is required. Exact matching is the point of the field: it's what stops someone pointing your users' approval at a different destination, so it has to be the app's real callback, not a homepage.

7. Add a revocation webhook URL (optional)

If the developer wants to know the moment a user withdraws access, enter their endpoint under Revocation Webhook URL.

When a user revokes the app's grant, SKU.io POSTs a signed token.revoked event to that address, letting the app clean up rather than discovering the problem through failing API calls. Leave it blank if the app doesn't need it.

The dialog filled in with an application name, a redirect URI, and a revocation webhook URL

Supplying a URL here is also what makes the webhook signing secret in the next step exist. Add one later and you'll need to rotate the secret to see it — see Manage OAuth applications.

8. Register it and copy the credentials

Click Register. The credentials appear once.

The OAuth application created dialog showing the Client ID, Client Secret, and Webhook Signing Secret with copy buttons

CredentialWhat it's for
Client IDIdentifies the application. Not secret — it appears in the authorization URL
Client SecretProves the app is genuinely that application when it exchanges a code for a token. Shown once. Confidential clients only
Webhook Signing SecretVerifies the X-SKU-Signature HMAC-SHA256 header on the token.revoked webhook, so the app knows the notification really came from SKU.io. Only shown when you set a revocation webhook URL

Copy all of them into your secret store, then tick I have copied the Client Secret and stored it safely to enable Done. The Client Secret cannot be shown again — losing it means rotating it, which breaks the app until the new value is installed.

Send the credentials to the developer over something private. They are enough, combined with a user's approval, to read and write that user's data.

What happens next

Registering the application is your half. The developer does the rest:

  1. Their app sends a user to the Auth URL with the Client ID, the redirect URI, and the scopes it wants.
  2. The user signs in and sees a consent screen naming the application and listing exactly those scopes.
  3. On approval, SKU.io redirects back to the redirect URI with a code, which the app exchanges at the Token URL for an access token.

From then on the app calls the API with that token, limited to the scopes the user approved. The user sees it under Settings → Developer → Connected Apps, along with everything it has been doing — see Review connected apps.

An app can also create webhook subscriptions during the flow if the user granted it webhooks:manage. Those show up on the Webhooks page with their Source marked as coming from a connected app.

Troubleshooting

What you seeLikely cause
Give the application a name so people recognise it on the consent screen.The name field is empty
Add at least one redirect URI.No redirect URI was entered
A redirect URI cannot be blank — remove the empty row or fill it in.An extra URI row was added and left empty. Clear it or fill it
Each redirect URI must be a valid HTTPS URL.A URI is malformed or uses http://. HTTPS is required, including in development
The revocation webhook URL must be a valid HTTPS URL.Same rule for the optional webhook field
The developer reports a redirect mismatchThe URI their app sends must match a registered one exactly — protocol, host, path, and trailing slash included

Next steps

Last verified: