Last modified: August 05, 2022

This C++ SDK uses outdated technology that limits your extension opportunities. We've built a new Platform SDK using Python and the latest open-source technology to deliver a vastly improved development experience. Go to Platform SDK to get started!


The IncomingConnectionInterface class exposes methods the Alteryxengine uses to communicate with a plugin that is processing an incoming connection. All tools with incoming connections must set the associated properties. If you are using the standard naming conventions, you can use the ImplementIncomingConnectionInterface.


A pointer to the object that exposing the IncomingConnectionInterface functions.

void * handle;

The object pointed to by the handle must expose the following functions:

  • II_Init
  • II_PushRecord
  • II_UpdateProgress
  • II_Close
  • II_Free


A pointer to a function that is called when the incoming connection has finished passing all records.

typedef void ( _stdcall * T_II_Close)(void * handle); T_II_Close pII_Close;

The function pointed to by this proper should:

  1. Push any output records that have not been sent downstream.
  2. Notify the Alteryxengine the process is complete using the OutputMessage function of the EngineInterface class, setting the nStatus parameter to 4.
  3. Close any outgoing connections.


A pointer to a function that is called when the incoming connection is done with the plugin.

typedef void ( _stdcall * T_II_Free)(void * handle); T_II_Free pII_Free;

Use to free any resources that may have been created during process.


A pointer to a function that is called when the incoming connection's record metadata becomes available or has changed, which is used to configure the plugin. Returns 1 if successfully configured and initialized, otherwise returns 0.

typedef long ( _stdcall * T_II_Init)(void * handle, const wchar_t * pXmlRecordMetaInfo); T_II_Init pII_Init;

pXmlRecordMetaInfo: The XML representation of the incoming connection's field and, optionally, sort properties. The XML should adhere to the following form:

<MetaInfo connection="Output"> <RecordInfo> <Field name="FieldName" source="InputSource" type="DataType"/> //For numeric field types <Field name="FieldName" size="SizeInBytes" source="InputSource" type="DataType"/> //For all other field types ... </RecordInfo> <SortInfo> //If the incoming connection has been pre-sorted <Field field="FieldName" order="SortOrder" /> //Sort order will be either "Asc" or "Desc" ... </SortInfo> </MetaInfo>


A pointer to a function that is called when an input record is sent to the plugin.

typedef long ( _stdcall * T_II_PushRecord)(void * handle, const RecordData * pRecord); T_II_PushRecord pII_PushRecord;

pRecord: The RecordData structure that represents the data for the incoming record.


A pointer to a function that is called when the incoming connection requests plugin progress.

typedef void ( _stdcall * T_II_UpdateProgress)(void * handle, double dPercent); T_II_UpdateProgress pII_UpdateProgress;

dPercent: A value between 0.0 and 1.0 indicating progress percent.

Was This Page Helpful?

Running into problems or issues with your Alteryx product? Visit the Alteryx Community or contact support. Can't submit this form? Email us.