Skip to main content
This page covers the most common issues developers encounter when integrating ClickTerm. For error codes, see the Error Reference.

Clickwrap dialog not showing

1

Check template status

The template must be Enabled in the dashboard. Disabled templates are not served by the SDK.
2

Check version state

The template must have a version in Effective state — not just Scheduled. Verify that the effectiveAt timestamp has passed.
3

Check prior acceptance

The SDK automatically suppresses the dialog if the user has already accepted the latest major version. This is expected behavior, not a bug.To verify, call GET /clickwraps/{endUserId}/status and check the status field. If it’s ACCEPTED, the dialog won’t appear until a new major version is published.
4

Verify SDK initialization

Ensure ClicktermClient.initialize() was called with the correct App ID before calling ClicktermDialog.show().

Verification returns 401 Unauthorized

CheckWhat to do
Headers vs query paramsCredentials must be sent as X-APP-ID and X-APP-KEY headers, not query parameters
Correct App KeyIf you recently regenerated the App Key, update your backend with the new one
Correct integrationMake sure the App Key matches the App ID you’re using (each integration has its own pair)

Events showing as “Unverified”

This means your backend hasn’t called POST /clickwrap/verify yet. The SDK returns a Signature, but the event stays in UNVERIFIED state until your backend verifies it. Solution: Ensure your frontend sends the Signature to your backend, and your backend calls the verify endpoint.

Template not found (404)

1

Template enabled?

Go to Templates and confirm the toggle is on.
2

Version effective?

Open the template and check the version’s effectiveAt date. If it’s in the future, the SDK can’t fetch it yet.
3

App linked?

If you’ve linked templates to specific integrations, make sure the App ID you’re using matches one that’s linked to this template.

Signature is null

A null Signature from ClicktermDialog.show() means the user has already accepted the latest major version. This is expected behavior.
ClicktermDialog.show({
  endUserId: "user-123",
  clickwrapTemplateId: "YOUR_TEMPLATE_ID",
}).then((result) => {
  if (result.clicktermSignature === null) {
    // User already accepted — proceed normally
    console.log("Already accepted, no action needed");
  } else {
    // New acceptance — send to backend
    sendToBackend(result.clicktermSignature);
  }
});

Android SDK: dialog not appearing

CheckWhat to do
Activity contextPass a valid Activity context (not ApplicationContext) to ClicktermDialog.show()
InitializationCall ClicktermClient.initialize() in your Application class or before showing the dialog
NetworkEnsure the device has internet access — the SDK fetches template content from the ClickTerm API

Rate limited (429)

If you receive HTTP 429, you’ve exceeded the rate limit. Read the Retry-After header and wait before retrying. See Rate Limits for retry code examples and best practices.

Still stuck?

If none of the above resolves your issue:
  1. Check the Error Reference for the specific error code
  2. Review the FAQ for common questions
  3. Contact support through the ClickTerm Dashboard