@capgo/capacitor-zebra-datawedge

June 16, 2026 · View on GitHub

Capgo - Instant updates for Capacitor

➡️ Get instant updates for your app with Capgo

Missing a feature? We’ll build the plugin for you.

Capgo's Zebra DataWedge plugin brings Zebra's Android barcode and RFID capture APIs to Capacitor.

It is designed as an open alternative to Ionic's enterprise Zebra Scanner offering and exposes the same high-level groups:

  • ZebraConfiguration for profile management
  • ZebraNotification for scanner/profile status notifications
  • ZebraQuery for profile, scanner, and DataWedge queries
  • ZebraRuntime for enabling/disabling scanners and triggering scans

Documentation

The complete documentation is published here: https://capgo.app/docs/plugins/zebra-datawedge/

Compatibility

Plugin versionCapacitor compatibilityMaintained
v8.*.*v8.*.*

This plugin is Android-only in practice because Zebra DataWedge itself runs on Zebra Android devices.

Install

You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

Then use the following prompt:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-zebra-datawedge` plugin in my project.

If you prefer Manual Setup, install the plugin by running the following commands and follow the platform-specific instructions below:

bun add @capgo/capacitor-zebra-datawedge
bunx cap sync

Zebra setup

Configure a DataWedge profile on the Zebra device before scanning:

  1. Associate the profile with your app.
  2. Enable Intent Output.
  3. Set Intent delivery to Broadcast Intent.
  4. Choose an intent action such as app.capgo.zebra.SCAN.

Basic usage

import {
  DataWedgeConfigMode,
  DataWedgePlugin,
  ZebraConfiguration,
  ZebraDataWedge,
  ZebraRuntime,
} from '@capgo/capacitor-zebra-datawedge';

const intentAction = 'app.capgo.zebra.SCAN';

await ZebraConfiguration.setConfig({
  profileName: 'CapgoZebraProfile',
  profileEnabled: true,
  configMode: DataWedgeConfigMode.CREATE_IF_NOT_EXIST,
  appList: [
    {
      packageName: 'com.example.app',
      activityList: ['*'],
    },
  ],
  pluginConfigs: [
    {
      pluginName: DataWedgePlugin.BARCODE,
      resetConfig: true,
      paramList: {
        scanner_selection: 'auto',
        scanner_input_enabled: 'true',
      },
    },
    {
      pluginName: DataWedgePlugin.INTENT,
      resetConfig: true,
      paramList: {
        intent_output_enabled: 'true',
        intent_action: intentAction,
        intent_delivery: 2,
      },
    },
  ],
});

await ZebraDataWedge.addListener('scan', (result) => {
  console.log('Scanned', result.data, result.labelType);
});

const result = await ZebraRuntime.softScanTrigger(intentAction);
console.log(result);

Notes

  • Query and configuration APIs depend on Zebra DataWedge being installed and enabled.
  • softScanTrigger() waits for the next scan broadcast on the intent action you provide.
  • softRfidTrigger() uses the first registered scan intent action. Register a scan action first if you need RFID reads.
  • Web and iOS return "not available" errors for all DataWedge operations.

API

cloneProfile(...)

cloneProfile(options: CloneProfileOptions) => Promise<void>
ParamType
optionsCloneProfileOptions

createProfile(...)

createProfile(options: CreateProfileOptions) => Promise<void>
ParamType
optionsCreateProfileOptions

deleteProfile(...)

deleteProfile(options: DeleteProfileOptions) => Promise<void>
ParamType
optionsDeleteProfileOptions

importConfig(...)

importConfig(options: ImportConfigOptions) => Promise<void>
ParamType
optionsImportConfigOptions

renameProfile(...)

renameProfile(options: RenameProfileOptions) => Promise<void>
ParamType
optionsRenameProfileOptions

restoreConfig()

restoreConfig() => Promise<void>

setConfig(...)

setConfig(options: SetConfigOptions) => Promise<void>
ParamType
optionsSetConfigOptions

setDisabledAppList(...)

setDisabledAppList(options: SetDisabledAppListOptions) => Promise<void>
ParamType
optionsSetDisabledAppListOptions

setIgnoreDisabledProfiles(...)

setIgnoreDisabledProfiles(options: IgnoreDisabledProfilesResult) => Promise<void>
ParamType
optionsIgnoreDisabledProfilesResult

registerForNotification(...)

registerForNotification(options: Omit<RegisterForNotificationOptions, 'callback'>) => Promise<void>
ParamType
optionsOmit<RegisterForNotificationOptions, 'callback'>

unRegisterForNotification(...)

unRegisterForNotification(options: Omit<RegisterForNotificationOptions, 'callback'>) => Promise<void>
ParamType
optionsOmit<RegisterForNotificationOptions, 'callback'>

enumerateScanners()

enumerateScanners() => Promise<{ scanners: ZebraDeviceScanner[]; }>

Returns: Promise<{ scanners: ZebraDeviceScanner[]; }>


getActiveProfile()

getActiveProfile() => Promise<{ profileName: string; }>

Returns: Promise<{ profileName: string; }>


getAssociatedApps(...)

getAssociatedApps(options: { profileName: string; }) => Promise<{ appList: DataWedgeAppConfig[]; }>
ParamType
options{ profileName: string; }

Returns: Promise<{ appList: DataWedgeAppConfig[]; }>


getConfig(...)

getConfig(options: GetConfigOptions) => Promise<ZebraProfileConfiguration>
ParamType
optionsGetConfigOptions

Returns: Promise<ZebraProfileConfiguration>


getDatawedgeStatus()

getDatawedgeStatus() => Promise<DataWedgeStatusResult>

Returns: Promise<DataWedgeStatusResult>


getDisabledAppList()

getDisabledAppList() => Promise<{ appList: DataWedgeAppConfig[]; }>

Returns: Promise<{ appList: DataWedgeAppConfig[]; }>


getIgnoreDisabledProfiles()

getIgnoreDisabledProfiles() => Promise<IgnoreDisabledProfilesResult>

Returns: Promise<IgnoreDisabledProfilesResult>


getProfilesList()

getProfilesList() => Promise<{ profiles: string[]; }>

Returns: Promise<{ profiles: string[]; }>


getScannerStatus()

getScannerStatus() => Promise<{ status: ScannerStatus | string; }>

Returns: Promise<{ status: string; }>


getVersionInfo()

getVersionInfo() => Promise<ZebraDeviceVersionInfo>

Returns: Promise<ZebraDeviceVersionInfo>


disableDatawedge()

disableDatawedge() => Promise<void>

disableScannerInput()

disableScannerInput() => Promise<void>

enableDatawedge()

enableDatawedge() => Promise<void>

enableScannerInput()

enableScannerInput() => Promise<void>

enumerateTriggers()

enumerateTriggers() => Promise<{ triggers: string[]; }>

Returns: Promise<{ triggers: string[]; }>


notify(...)

notify(options: DataWedgeNotifyOptions) => Promise<void>
ParamType
optionsDataWedgeNotifyOptions

resetDefaultProfile()

resetDefaultProfile() => Promise<void>

setDefaultProfile(...)

setDefaultProfile(options: { profileName: string; }) => Promise<void>
ParamType
options{ profileName: string; }

setReportingOptions(...)

setReportingOptions(options: ReportingOptions) => Promise<void>
ParamType
optionsReportingOptions

softRfidTrigger()

softRfidTrigger() => Promise<ZebraScanResult>

Returns: Promise<ZebraScanResult>


softScanTrigger(...)

softScanTrigger(options: { intentAction: string; }) => Promise<ZebraScanResult>
ParamType
options{ intentAction: string; }

Returns: Promise<ZebraScanResult>


switchScanner(...)

switchScanner(options: { scannerIndex?: string; scannerIdentifier?: ScannerIdentifier; }) => Promise<void>
ParamType
options{ scannerIndex?: string; scannerIdentifier?: ScannerIdentifier; }

switchScannerParams(...)

switchScannerParams(options: SwitchScannerParamsOptions) => Promise<void>
ParamType
optionsSwitchScannerParamsOptions

switchToProfile(...)

switchToProfile(options: { profileName: string; }) => Promise<void>
ParamType
options{ profileName: string; }

getPluginVersion()

getPluginVersion() => Promise<PluginVersionResult>

Returns: Promise<PluginVersionResult>


addListener('scan', ...)

addListener(eventName: 'scan', listenerFunc: (event: ZebraScanResult) => void) => Promise<PluginListenerHandle>
ParamType
eventName'scan'
listenerFunc(event: ZebraScanResult) => void

Returns: Promise<PluginListenerHandle>


addListener('notification', ...)

addListener(eventName: 'notification', listenerFunc: (event: ZebraNotificationEvent) => void) => Promise<PluginListenerHandle>
ParamType
eventName'notification'
listenerFunc(event: ZebraNotificationEvent) => void

Returns: Promise<PluginListenerHandle>


Interfaces

CloneProfileOptions

PropType
destProfileNamestring
sourceProfileNamestring

CreateProfileOptions

PropType
profileNamestring

DeleteProfileOptions

PropType
profileNamesstring[]

ImportConfigOptions

PropType
fileListstring[]
folderPathstring

RenameProfileOptions

PropType
currentProfileNamestring
newProfileNamestring

SetConfigOptions

PropType
appListDataWedgeAppConfig[]
configModeDataWedgeConfigMode
pluginConfigsDataWedgePluginConfig[]
profileEnabledboolean
profileNamestring

DataWedgeAppConfig

PropType
activityListstring[]
packageNamestring

DataWedgePluginConfig

PropType
outputPluginNameDataWedgePlugin
paramListDataWedgePluginParameters
pluginNameDataWedgePlugin
resetConfigboolean

DataWedgePluginParameters

SetDisabledAppListOptions

PropType
appListDataWedgeAppConfig[]
configModeDataWedgeConfigMode

IgnoreDisabledProfilesResult

PropType
enabledboolean

RegisterForNotificationOptions

PropType
appNamestring
callback((notification: ZebraNotificationEvent) => void)
intentActionstring
notificationTypeDataWedgeNotificationType

ZebraNotificationEvent

PropType
notificationTypestring
profileNamestring
scannerStatusstring
statusstring
rawRecord<string, unknown>

ZebraDeviceScanner

PropType
connectionStateboolean
idstring
indexnumber
namestring

ZebraProfileConfiguration

PropType
appListDataWedgeAppConfig[]
pluginConfigListDataWedgePluginConfig[]
profileEnabledboolean
profileNamestring

GetConfigOptions

PropType
pluginConfigsPluginConfigOptions[]
profileNamestring

PluginConfigOptions

PropType
outputPluginNameDataWedgePlugin
pluginNameDataWedgePlugin

DataWedgeStatusResult

PropType
isEnabledboolean

ZebraDeviceVersionInfo

PropType
barcodeVersionstring
dataWedgeVersionstring
decoderVersionstring
scannerFirmwareVersionsstring[]
simulScanVersionstring

DataWedgeNotifyOptions

PropType
deviceIdentifierstring
notificationSettingsnumber[]

ReportingOptions

PropType
reportingEnabledboolean
reportingGenerateOption'manual' | 'auto' | 'both'
reportingShowForManualImportboolean

ZebraScanResult

PropType
datastring
decodedModestring
intentActionstring
labelTypestring
sourcestring

SwitchScannerParamsOptions

PropType
scannerIdentifierScannerIdentifier
scannerParamsDataWedgePluginParameters

PluginVersionResult

PropType
versionstring

PluginListenerHandle

PropType
remove() => Promise<void>

Type Aliases

Omit

Construct a type with the properties of T except for those in type K.

Pick<T, Exclude<keyof T, K>>

Pick

From T, pick a set of properties whose keys are in the union K

{ [P in K]: T[P]; }

Exclude

Exclude from T those types that are assignable to U

T extends U ? never : T

Record

Construct a type with a set of properties K of type T

{ [P in K]: T; }

Enums

DataWedgeConfigMode

MembersValue
CREATE_IF_NOT_EXIST'CREATE_IF_NOT_EXIST'
OVERWRITE'OVERWRITE'
REMOVE'REMOVE'
UPDATE'UPDATE'

DataWedgePlugin

MembersValue
ADF'ADF'
BARCODE'BARCODE'
BDF'BDF'
DCP'DCP'
EKB'EKB'
INTENT'INTENT'
IP'IP'
KEYSTROKE'KEYSTROKE'
MSR'MSR'
RFID'RFID'
SERIAL'SERIAL'
TOKENS'TOKENS'
VOICE'VOICE'

ScannerStatus

MembersValue
CONNECTED'CONNECTED'
DISABLED'DISABLED'
DISCONNECTED'DISCONNECTED'
IDLE'IDLE'
SCANNING'SCANNING'
WAITING'WAITING'

DataWedgeNotificationType

MembersValue
CONFIGURATION_UPDATE'CONFIGURATION_UPDATE'
PROFILE_SWITCH'PROFILE_SWITCH'
SCANNER_STATUS'SCANNER_STATUS'

ScannerIdentifier

MembersValue
AUTO'AUTO'
BLUETOOTH_DS3678'BLUETOOTH_DS3678'
BLUETOOTH_RS6000'BLUETOOTH_RS6000'
BLUETOOTH_SSI'BLUETOOTH_SSI'
INTERNAL_CAMERA'INTERNAL_CAMERA'
INTERNAL_IMAGER'INTERNAL_IMAGER'
INTERNAL_LASER'INTERNAL_LASER'
PLUGABLE_SSI'PLUGABLE_SSI'
PLUGABLE_SSI_RS5000'PLUGABLE_SSI_RS5000'
SERIAL_SSI'SERIAL_SSI'
USB_SSI_DS3608'USB_SSI_DS3608'