---
title: "App installation status changed"
description: "Occurs whenever an app is installed or uninstalled in the store."
doc_type: openapi
doc_category: openapi
doc_version: v20270301
source_url:
  html: 'https://developer.shopline.com/docs/webhook/application/app-installation-status-changed'
  md: 'https://developer.shopline.com/docs/webhook/application/app-installation-status-changed.md'
---
# App installation status changed

Occurs whenever an app is installed or uninstalled in the store.

- **API Version:** v20270301
- **API Type:** Webhook
- **API Protocol:** RESTful

## Request

### Request Headers

* `X-Shopline-Topic`

  string (required)

  The unique identifier for the event.

* `X-Shopline-Hmac-Sha256`

  string (required)

  The signature of the request. Upon receiving the request, you must [verify the signature](https://developer.shopline.com/docs/apps/api-instructions-for-use/generate-and-verify-signatures.md#post-requests) to confirm the authenticity and integrity of the data.

* `X-Shopline-Shop-Domain`

  string (required)

  The store domain.

* `X-Shopline-Shop-Id`

  string (required)

  The store ID.

* `X-Shopline-Merchant-Id`

  string (required)

  The merchant ID.

* `X-Shopline-API-Version`

  string (required)

  The API version.

* `X-Shopline-Webhook-Id`

  string (required)

  The ID of this Webhook event.

### Request Body

* `appkey`

  string

  The globally unique identifier for the app.

* `country_code`

  string

  The [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) standard code for the country or region where the store is located. 

* `created_at`

  string

  The exact date and time when the event occurred. Format: [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html). The time zone corresponds to the store's time zone.  
  
  
  
  :::note{title="note"}
  The `created_at` and `timestamp` fields represent the same moment in time to meet different developer needs. 
  :::

* `handle`

  string

  The store's unique identifier in SHOPLINE, corresponding to the `{handle}` part of the domain name `{handle}.myshopline.com`.  

* `merchant_id`

  string

  The global unique identifier for the merchant.  

* `name`

  string

  The current display name of the store (modifiable by the merchant).  

* `operate`

  string

  The type of operation being performed. For example:  
  + `INSTALL`: App installation  
  + `UNINSTALL`: App uninstallation

* `store_id`

  string

  The global unique identifier for the store. 

* `timestamp`

  long

  The time when the event occurred, in the format of a 13-digit milliseconds timestamp.
  
  :::note{title="note"}
  The `created_at` and `timestamp` fields represent the same moment in time to meet different developer needs. 
  ::: 

* `timezone`

  string

  The [IANA time zone](https://data.iana.org/time-zones/tzdb-2021a/zone1970.tab) identifier used by the store. 
  
  For example:  
  + `America/New_York`: Eastern Time (US)  
  + `Asia/Tokyo`: Japan Standard Time

## Response

### Status Codes

* `200`

  After receiving a webhook notification from SHOPLINE, you must respond with the following format: 
  
  ``` HTTP/1.1 200 OK ```
  
  For more information about how to subscribe to webhooks and webhook response rules, refer to [Webhook overview](https://developer.shopline.com/docs/apps/api-instructions-for-use/webhooks/overview.md).

### Response Body

#### 200

_No response body_

## OpenAPI Definition

```json
{
  "description": "Occurs whenever an app is installed or uninstalled in the store.",
  "externalDocs": {
    "description": "| Event Group | Event Identification |\n| :------: | :------: |\n|apps        |apps/installed_uninstalled        |\n",
    "url": "",
    "errorTableDescription": ""
  },
  "operationId": "ZwxzjToT",
  "parameters": [
    {
      "name": "X-Shopline-Topic",
      "in": "header",
      "description": "The unique identifier for the event.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Topic",
        "description": "The unique identifier for the event.",
        "type": "string",
        "example": "orders/edited"
      },
      "example": "orders/edited"
    },
    {
      "name": "X-Shopline-Hmac-Sha256",
      "in": "header",
      "description": "The signature of the request. Upon receiving the request, you must [verify the signature](https://developer.shopline.com/docs/apps/api-instructions-for-use/generate-and-verify-signatures.md#post-requests) to confirm the authenticity and integrity of the data.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Hmac-Sha256",
        "description": "The signature of the request. Upon receiving the request, you must [verify the signature](https://developer.shopline.com/docs/apps/api-instructions-for-use/generate-and-verify-signatures.md#post-requests) to confirm the authenticity and integrity of the data.",
        "type": "string",
        "example": "XWmrwMey6OsLMeiZKwP4FppHH3cmAiiJJAweH5Jo4bM="
      },
      "example": "XWmrwMey6OsLMeiZKwP4FppHH3cmAiiJJAweH5Jo4bM="
    },
    {
      "name": "X-Shopline-Shop-Domain",
      "in": "header",
      "description": "The store domain.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Shop-Domain",
        "description": "The store domain.",
        "type": "string",
        "example": "example.myshopline.com"
      },
      "example": "example.myshopline.com"
    },
    {
      "name": "X-Shopline-Shop-Id",
      "in": "header",
      "description": "The store ID.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Shop-Id",
        "description": "The store ID.",
        "type": "string",
        "example": "1610418123456"
      },
      "example": "1610418123456"
    },
    {
      "name": "X-Shopline-Merchant-Id",
      "in": "header",
      "description": "The merchant ID.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Merchant-Id",
        "description": "The merchant ID.",
        "type": "string",
        "example": "2000001234"
      },
      "example": "2000001234"
    },
    {
      "name": "X-Shopline-API-Version",
      "in": "header",
      "description": "The API version.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-API-Version",
        "description": "The API version.",
        "type": "string",
        "example": "v20250601"
      },
      "example": "v20250601"
    },
    {
      "name": "X-Shopline-Webhook-Id",
      "in": "header",
      "description": "The ID of this Webhook event.",
      "required": true,
      "style": "string",
      "schema": {
        "name": "X-Shopline-Webhook-Id",
        "description": "The ID of this Webhook event.",
        "type": "string",
        "example": "b54557e48a5fbf7d70bcd043"
      },
      "example": "b54557e48a5fbf7d70bcd043"
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "appkey": {
              "name": "appkey",
              "description": "The globally unique identifier for the app.",
              "type": "string",
              "example": "35f91ba37b941e6ce5fcc67975ab7aafb0a12345"
            },
            "country_code": {
              "name": "country_code",
              "description": "The [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) standard code for the country or region where the store is located. ",
              "type": "string",
              "example": "US"
            },
            "created_at": {
              "name": "created_at",
              "description": "The exact date and time when the event occurred. Format: [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html). The time zone corresponds to the store's time zone.  \n\n\n\n:::note{title=\"note\"}\nThe `created_at` and `timestamp` fields represent the same moment in time to meet different developer needs. \n:::",
              "type": "string",
              "example": "2024-04-01T14:01:23+08:00"
            },
            "handle": {
              "name": "handle",
              "description": "The store's unique identifier in SHOPLINE, corresponding to the `{handle}` part of the domain name `{handle}.myshopline.com`.  ",
              "type": "string",
              "example": "smartstore"
            },
            "merchant_id": {
              "name": "merchant_id",
              "description": "The global unique identifier for the merchant.  ",
              "type": "string",
              "example": "2000001234"
            },
            "name": {
              "name": "name",
              "description": "The current display name of the store (modifiable by the merchant).  ",
              "type": "string",
              "example": "SHOPLINE Store"
            },
            "operate": {
              "name": "operate",
              "description": "The type of operation being performed. For example:  \n+ `INSTALL`: App installation  \n+ `UNINSTALL`: App uninstallation",
              "type": "string",
              "example": ""
            },
            "store_id": {
              "name": "store_id",
              "description": "The global unique identifier for the store. ",
              "type": "string",
              "example": "1610418123456"
            },
            "timestamp": {
              "name": "timestamp",
              "description": "The time when the event occurred, in the format of a 13-digit milliseconds timestamp.\n\n:::note{title=\"note\"}\nThe `created_at` and `timestamp` fields represent the same moment in time to meet different developer needs. \n::: ",
              "type": "long",
              "example": 1293941471000
            },
            "timezone": {
              "name": "timezone",
              "description": "The [IANA time zone](https://data.iana.org/time-zones/tzdb-2021a/zone1970.tab) identifier used by the store. \n\nFor example:  \n+ `America/New_York`: Eastern Time (US)  \n+ `Asia/Tokyo`: Japan Standard Time",
              "type": "string",
              "example": ""
            }
          },
          "example": {
            "appkey": "35f91ba37b941e6ce5fcc67975ab7aafb0a12345",
            "country_code": "US",
            "created_at": "2024-04-01T14:01:23+08:00",
            "handle": "smartstore",
            "merchant_id": "2000001234",
            "name": "SHOPLINE Store",
            "operate": "",
            "store_id": "1610418123456",
            "timestamp": 1293941471000,
            "timezone": ""
          }
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "After receiving a webhook notification from SHOPLINE, you must respond with the following format: \n\n``` HTTP/1.1 200 OK ```\n\nFor more information about how to subscribe to webhooks and webhook response rules, refer to [Webhook overview](https://developer.shopline.com/docs/apps/api-instructions-for-use/webhooks/overview.md)."
    }
  },
  "info": {
    "title": "App installation status changed",
    "version": "v20270301"
  },
  "exampleDocs": [
    {
      "postExample": "{\n  \"appkey\": \"35f91ba37b941e6ce5fcc67975ab7aafb0a12345\",\n  \"country_code\": \"US\",\n  \"created_at\": \"2024-04-01T14:01:23+08:00\",\n  \"handle\": \"shopline\",\n  \"merchant_id\": \"2000001234\",\n  \"name\": \"SHOPLINE Store\",\n  \"operate\": \"UNINSTALL\",\n  \"store_id\": \"1610418123456\",\n  \"timestamp\": 1293941471000,\n  \"timezone\": \"Asia/Singapore\"\n}",
      "scenes": "App uninstallation",
      "isDefault": true,
      "lang": "en"
    }
  ]
}
```