1. Home
  2. Integration 360

Integration 360

The Integration 360 app is a centralized management hub designed to streamline, automate, and monitor all data exchanges between our system and external platforms.

Why?

  • Automated Workflows: Eliminates manual data handling by allowing users to configure one-off or recurring jobs, such as automated secure SFTP data transfers or periodic CSV file lookups.
  • Compatibility: Supports a wide array of data formats (JSON, CSV, Excel) and connection protocols (FTP, SFTP, EPOS, Shopify) to meet diverse client and third-party integration requirements.
  • Visibility & Diagnostics: Provides real-time status tracking (Successful, Pending, Failed) across all jobs, making it easier to oversee operations and quickly troubleshoot connection timeouts or authentication issues.

1.1 Import

The Import section allows you to manage incoming data from external sources. The main dashboard provides an overview of all configured import jobs, displaying their execution frequency, last run time, and current status (e.g., Successful, Pending, Failed).

Creating a New Import Job

Step 1: Initial Setup

Click the blue + Create a Job button in the top right corner of the dashboard. A popup modal will appear. Enter your desired Job Name, select the Job Type (Import), and proceed to navigate to the detailed configuration form.

Step 2: Data Extraction

Define what data you are pulling. Select the Data type from the dropdown. The available Data Source options will dynamically update based on your selection.

Data TypeSupported Data Sources
Sales DataFTP, SFTP, EPOS, Shopify, Excel
Counting Data, Flight Counter AllocationFTP, SFTP, Excel
Floorplan DataJSON
Other Data TypesExcel
All Other Data Types include: ESL Product, Area Data, Area Group Data, Standard Operating Hours, Custom Operating Hours, New Site Creation, New Product Creation, Staff Data, Area Session Data, and Session Data.

Step 3: Connection Settings (FTP & SFTP)

If you are securely pulling data from a server, you must provide the necessary connection credentials.

  • FTP: Requires Hostname, Port, Path, Username, and Password.
  • SFTP: Requires all standard FTP fields, plus an uploaded SSH Key File and the corresponding Key File Password.

Step 4: Parser and File Settings

  • Parser Type: Choose the appropriate parser from the dropdown to ensure the system reads your incoming data structure correctly.
  • File Pattern: If using FTP or SFTP, specify the file pattern (e.g., data_.csv) so the system knows exactly which files to look for and extract from the server directory.
  • Once these details are configured, click Next to proceed to the scheduling options.

Step 5: Data Load (Scheduling)

In the final step, you will determine when and how often the import job runs.

  • Mode: Select One-off if you only need to import data for a specific, singular instance, or Recurring to set up a continuous, automated schedule.
  • Date Range: Specify the start and end dates to define the timeframe of the data being imported.

After configuring your scheduling preferences, click the blue Create Job button in the bottom right corner to finalize and save your setup.

References & Documentation:

Sales data import video guide:

Full supported user guide:

1.2 Export

The Export section allows you to extract and push data from our system out to external platforms, clients, or specific file destinations.

Similar to the Import dashboard, the main view provides a comprehensive list of all your configured export jobs. It displays the execution frequency, the timestamp of the last run, and the current status (e.g., Successful, Pending, Failed).

Pro Tip: In the Action column on the right, you will find a Duplicate Job option. This is highly useful for quickly cloning an existing complex export setup if you only need to make minor adjustments for a new job.

Creating a New Export Job

Step 1: Initial Setup

Click the blue + Create a Job button in the top right corner. A modal will prompt you to enter your Job Name and select the Job Type (choose "Export"). Click proceed to navigate to the detailed configuration form.

Step 2: Data Extraction

This section defines exactly what data you are packaging and how it will be formatted for delivery. Configure the following fields based on your requirements:

  • Data: Select the core category of data you wish to export (e.g., Counting Data, Sales Data, Operating Hours).
  • Entity Level: Define the hierarchical level of the data (e.g., Site level, Area level, or Company level).
  • Entity: Specify the exact entity (e.g., choose the specific branch or site name you are pulling data for).
  • Time Granularity: Select how the data should be grouped chronologically (e.g., Hourly, Daily, Weekly).
  • Export Mode: Choose the delivery method for your data. Common options typically include FTP/SFTP, Email Delivery, or generating a direct Download Link. (Note: Selecting FTP/SFTP will prompt additional connection setting fields).
  • File Format: Select the desired output format for the destination system (e.g., CSV, Excel, JSON).

Step 3: Data Load (Scheduling)

In the final section, determine when and how often the system should generate and send this export.

  • Select One-off to generate a single export for a specific, historical date range.
  • Select Recurring to set up an automated, continuous schedule (e.g., sending yesterday's data every morning).

Once all configurations are set, click the blue Create Job button in the bottom right corner to finalize, save, and activate your data export.

References & Documentation:

1.3 BI Plugins

The BI Plugins section provides options for connecting third-party Business Intelligence (BI) tools and reporting platforms directly to FootfallCam data. This section is organized into three tabs: API, Power BI, and Excel.

1.3.1 API Integration

Use this option to programmatically query and export FootfallCam Cube data directly into your custom applications or third-party platforms.

Step 1: Get Credentials

  1. Click the blue Get Credential button to generate your authentication credentials.
  2. Copy the generated Username and Password to connect to the FootfallCam Cube in your API application.

Step 2: Export Data via API

  1. Follow the link provided in the step-by-step guide on the page to structure your API requests and export data.

1.3.2 Power BI Integration

Connect FootfallCam counting data directly into Microsoft Power BI Desktop for interactive dashboards and custom visualizations.

Step 1: Get Credentials

  1. Click the Get Credential button to obtain your dedicated Power BI authentication credentials (Username and Password).

Step 2: Install Power BI Application

  1. If you do not have Power BI Desktop installed, click the Install button to download and install Microsoft Power BI Desktop.

Step 3: Connect and Build Reports

  1. Watch the embedded # Internal Training Power BI tutorial video for a walkthrough on connecting your credentials and creating your first graph using FootfallCam counting data.

1.3.3 Excel Integration

Import FootfallCam counting data directly into Microsoft Excel spreadsheets for easy analysis and reporting.

Step 1: Get Credentials

  1. Click the Get Credential button to generate your Excel access credentials (Username and Password).

Step 2: Install Npgsql Driver

  1. Click the Install button to go to the driver download page.
  2. Download Npgsql-4.0.17.msi under the Assets section.
  3. Open the downloaded file and follow the installation wizard to complete the driver setup. (Refer to the embedded training video for guidance).

Step 3: Download Excel File

  1. Click Download to get the FootfallCam Data Connecter.xlsx template.
  2. This pre-configured Excel workbook utilizes the FootfallCam API, allowing you to input your credentials to fetch data directly into your spreadsheet.

Step 4: Retrieve Data in Microsoft Excel

  1. Follow the steps shown in the Data Integration with Excel video tutorial to set your date range, select sites, and populate counting data into your workbook.

References & Documentation:

1.3.4 DataBricks Integration

Connect FootfallCam counting data directly into Microsoft Power BI Desktop for interactive dashboards and custom visualizations.

Step 1: Get Credentials

Click the Get Credential button to obtain your dedicated authentication credentials (Username and Password).

Step 2: Log into DataBricks

Log into Databricks using your account

Step 3: Connect and Query

Connect to Databricks through Postgres using credentials obtained from step 1

Refer to Import and Export for more information on connecting to CubeJS with Databricks and start querying

1.4 Email Scheduler

The Email Scheduler section allows you to automate the delivery of specific reports, analytics, and dashboards directly to designated inboxes.

The main dashboard provides a clear overview of all active and inactive email schedules. You can quickly monitor the Next Scheduled Date Time and review the Last 5 Job Status column, which offers a quick visual indicator (green checkmarks for success) to ensure your automated emails are sending correctly.

Managing Schedules

At the top right of the dashboard, you have two primary dropdown buttons to manage your automated emails:

  • + New Scheduler: Allows you to create a Single Schedule or set up Bulk Scheduling.
  • More Action: Allows you to select multiple existing jobs from the dashboard to perform a Bulk Update or Bulk Delete, saving time on mass administration.

Option A: Creating a Single Schedule

  1. Click the blue + New Scheduler button and select Single Schedule.
  2. A "Create New Email Scheduler" popup modal will appear.
  3. File: Click the dropdown to select the exact report or dashboard you want to export (e.g., Company Daily (Report), Site Sales Daily (Report), Analytics Workspace).
  4. Entity Level & Time Granularity: Depending on the file selected, define the hierarchy (e.g., Site Level, Site Group Level) and how the data should be grouped chronologically.
  5. Proceed through the subsequent prompts to finalize the recipient and scheduling details.

Option B: Setting up Bulk Scheduling

Use this option when you need to configure mass report deliveries across multiple entities or groups simultaneously.

  1. Click the blue + New Scheduler button and select Bulk Scheduling.
  2. A comprehensive "Bulk Scheduling" popup modal will appear. Configure the following parameters:
    • File: Select the report or dashboard template to be exported.
    • Entity: Choose the specific entities (e.g., branches or regions) the data should cover.
    • Date Range: Specify the historical timeframe the report should analyze.
    • Frequency: Define how often these emails trigger (e.g., Daily, Weekly, Monthly, or One Off).
    • Next Scheduled Time: Use the calendar picker to set the exact date and time for the first delivery.
    • Recipient Group(s): Select the predefined mailing lists or user groups that should receive these automated reports.
  3. Once all parameters are defined, click the blue Create button at the bottom of the modal to activate your bulk email schedules.

1.5 Data Manager Implementation Guide

FootfallCam's Data Manager Application is an open-source script that aims to assist customers with data pulling in a more streamlined and approved method. 

Core Problem: Standard API polling often mistakes a successful connection response for complete data. In a distributed platform, records remain provisional while device uploads, aggregation, or reprocessing completes. A one-time poll cannot distinguish a final period from a temporarily incomplete one.

Core Business Result: Temporary processing delays will no longer become permanent database omissions, and business users gain complete visibility into period status.

In-Scope: Connection to FootfallCam V9 cube service, readiness evaluation, automatic retrieval of non-final periods, safe insertion/update (MariaDB/SFTP), logging, period watermarks, reconciliation, and backfill controls.

Out-of-Scope: Customer dimensional modeling, custom calculations, platform incident response, or substituting source-platform validation.

The workflow inspects readiness between retrieval and publication. Complete periods are idempotently upserted, while non-final periods route directly into a persistent retry queue for re-evaluation.

ARCHITECTURAL FLOW: [Trigger] -> [Retrieve Period] -> [Inspect Readiness]
├── Complete State -> [Validate & Upsert] -> [Update Audit & Watermark]
└── Non-Final State -> [Queue in Retry] -> [Re-evaluate Under Schedule]

Package Components: Config.json (Settings), DataManagerApp.py (Core engine), requirements.txt (Python dependencies), run.bat (Windows launcher), data_integration.log (Execution log).

Data Levels: ffc_site_summary (Site level), ffc_area_summary (Area/Dwell), ffc_device_summary (Device raw data). 

Security & Account Access Model
Target Access: Restrict the target database account to the staging schema or SFTP landing directory assigned to the integration.

Credential Protection: Never include live passwords or tokens in configuration files, scripts, or support tickets. Restrict Config.json read permissions to the service identity and exclude it from unapproved backups.


Technical Prerequisites

Host Environment: Windows Server (for run.bat and Task Scheduler) or Linux host with cron. Python 3.x with pinned dependencies.

Network: Outbound access to V9 cube endpoint. 


Configuration Reference

Below is a sanitized configuration template. Key parameters must be validated against the active environment prior to schedule activation.
{
  "postgres": {
    "host": "cube.footfallcam.com",
    "port": 6432,
    "user": "<FFC_SOURCE_USER>",
    "password": "<FROM_APPROVED_SECRET_STORE>",
    "dbname": "postgres"
  },
  "mariadb": {
    "host": "<CUSTOMER_DATABASE_HOST>",
    "port": 3306,
    "user": "<CUSTOMER_DATA_MANAGER_USER>",
    "password": "<FROM_APPROVED_SECRET_STORE>",
    "database": "footfallcam_stage"
  },
  "level": "ffc_site_summary",
  "granularity": "daily",
  "table_name": "ffc_site_daily_stage"
}

Granularity NameV9 ConceptImplementation Rule
dailyTime with day granularityStandard daily reporting grain
hourlyTime with hour granularityStandard hourly intraday grain
minuteTime with minute granularityUse only where metrics & policy support.
15_minuteTime15Minute dimension 
Granularities for Data Manager App


V9 Aggregation Status Decision Rules

StatusPublished MeaningData Manager ActionReporting Treatment
CompleteNo data hole identified for period.Validate & idempotently upsert; record status timestamp.Publishable
DelayLate data present; may become Complete.Store state; queue exact period for retry.Provisional
On Hold /
To Aggregate /
To Reaggregate
Period is pending checkingStore state; retry on next controlled cycle.Pending
MissedData hole identified in source.Record hole; retain values without converting to 0; retry.Exception
Data Spike DetectedData spike detected in source.Record spike; If genuine, keep, otherwise, raise to FootfallCam for checkingProvisional
Statuses of V9 Aggregation (AggregationStatus_A01 for Footfall In)


Idempotent Upsert & Schema Strategy
Target tables must enforce a composite unique key (e.g., site_id + period_start + granularity) to ensure reruns update existing records rather than inserting duplicates.

-- Illustrative MariaDB Idempotent Upsert
INSERT INTO ffc_site_daily_stage (
site_id, period_start, granularity, a01, a02,
aggregationstatus_a01, source_status_updated_utc, ingestion_updated_utc
) VALUES (
:site_id, :period_start, :granularity, :a01, :a02,
:aggregationstatus_a01, :source_status_updated_utc, UTC_TIMESTAMP()
) ON DUPLICATE KEY UPDATE
a01 = VALUES(a01),
a02 = VALUES(a02),
aggregationstatus_a01 = VALUES(aggregationstatus_a01),
source_status_updated_utc = VALUES(source_status_updated_utc),
ingestion_updated_utc = UTC_TIMESTAMP();


Reconciliation Windows

Incremental Lookback: Current period + prior 7 completed days on every routine run.

Daily Reconciliation: Prior 7 days, prioritizing unresolved status queues.

Weekly Reconciliation: Prior 35 days to ensure complete historical alignment and capture long-delayed device uploads. 

Note: Daily is recommended.


Scheduling Guidelines

Windows Task Scheduler: Configure task using 'Run whether user is logged on or not' with a dedicated service account. Set 'Start in' to the application directory so relative paths resolve.

Concurrency Control: Enable 'Do not start a new instance' if the task is already running to prevent concurrent overlapping executions.

Transient Technical Retries: Use exponential backoff with jitter (e.g., 30s, 2m, 5m, 15m) for network/timeout errors. Do NOT use transient retries for non-final aggregation statuses.


Operational Troubleshooting Matrix

SymptomPrimary CauseResolution Steps
No Run RecordScheduler / Host IssueCheck Task Scheduler history, service identity, host logs
Auth FailureInvalid / expired credentialsHalt retries; verify account status and credentials
Zero Rows ReturnedDate range or filter mismatchVerify filters
Late Data PersistsDelayed upstream uploadsKeep queued; monitor and raise to FootfallCam if persists
Duplicate RowsUnique key missing in targetHalt reporting; define composite unique key on the target table
Troubleshooting Matrix and Recommended Steps to Resolve


Responsibility Matrix (RACI)
Responsible | Accountable | Consulted | Informed

ActivityFootfallCamUser IT / DataBusiness Owner
Provision Source Access & DefinitionsR / ACI
Host, Configure & Schedule Data Manager / Self-Written ScriptsCR / AI
Investigate V9 Readiness / Source IssuesR / ACI
Investigate Local Network / Target IssuesCR / AI
Approve Data Publication RulesCCR / A
RACI Matrix


Go-Live Acceptance Criteria

1. Connectivity: Service accounts verify least-privilege target access.

2. Readiness Loop: Test payloads containing Late Data enter retry queues without populating reports.

3. Idempotency Proof: Consecutive manual runs of identical parameters leave row counts completely unchanged.

4. Interruption Recovery: Forced network drops during execution recover safely without advancing watermarks prematurely.

Link to example script: Data Manager External App

Updated on August 12, 2026