Skip to main content

Goal

Compare two published versions of the same model and report which elements were added, removed, or changed — a common BIM manager and coordination workflow.

What you will build

A script that loads two versions, indexes elements by applicationId (or name as fallback), and prints counts of added, removed, and unchanged objects.

When to use this

Use this after design iterations, connector republishes, or milestone reviews when you need to know what changed between two Speckle versions. Avoid this when you only need a single-version health check — see Build your first model analysis tool.
  1. Load both versions with Receive2 using each version’s referencedObject id
  2. Flatten() each graph
  3. Index by applicationId when present (stable host-app id from connectors)
  4. Fall back to name only when ids are missing — names can collide
  5. Compare key sets and optionally property hashes

Complete example

Complete example
applicationId is set by connectors to the stable id from the host application (for example a Revit element id). Without it, compare by name with caution — duplicate names are common in large models.

How it works

Each version points at a root object id. Receive2 downloads two separate object graphs. Indexing by applicationId lets you match the same physical element across publishes. For deeper diffs, compare specific properties keys (category, level, fire rating) or serialize selected properties to a string hash.

Common mistakes

Next steps

Send analysis results back

Publish a change summary to Speckle

Find objects by property

Filter and index patterns

BIM data patterns

applicationId and properties
Last modified on July 18, 2026