Direction: publish, load, or both
Most new host integrations should assume publish only until there is a clear user need to load Speckle data back into that host.
Receive-only is not a default connector shape. If you are building inside a CAD/BIM/structural
application, implement publish depth first. Treat load only as a specialised product model
like analytics and reporting tools, not as the third equal option for every host.
Integration depth (increasing effort)
Depth describes how much you invest after the host can publish reliably. Each step adds load-side capability. Many connectors never go beyond publish.1
Publish
Goal: Reliable extraction from the host into Speckle.Includes:
- Geometry (meshes, curves, points, display values)
- Metadata (parameters, identifiers, discipline-specific properties)
- Analysis or results payloads where the host exposes them
- ETABS — publish-only; structural model and analysis-oriented publish
- Tekla Structures — publish-only
- Navisworks — publish-only; coordination and federation publish
- Revit, Rhino, Grasshopper, Blender, Archicad, Civil 3D, AutoCAD, SketchUp — publish (and load where supported)
2
Load: reference geometry
Goal: Bring Speckle geometry into the host as reference content—not editable native model semantics.Typical behaviour:
- Place meshes or simplified geometry for coordination
- Optional transforms, layers, or visibility by source model
- No expectation that edits in the host write back to Speckle
- Revit — default load as Direct Shapes (generic models) for coordination geometry
- Rhino, Blender, SketchUp, Archicad, Civil 3D, AutoCAD — load workflows documented per connector
3
Load: interop lite
Goal: Smarter load without full native object reconstruction.Typical behaviour:
- Category mapping — map Speckle types or layers to host categories, families, or styles
- Metadata transfer — attach parameters or properties to reference elements
- Still pragmatic: partial coverage, documented limitations
- Revit — materials and parameters on loaded objects; category and type behaviour described in connector FAQ
- Grasshopper — receive workflows with property and parameter-driven filtering
4
Load: pragmatic interop
Goal: Recreate selected native host objects from Speckle data where it is worth the maintenance.Typical behaviour:
- Native walls, members, grids, or discipline-specific types where converters exist
- Explicit scope: which types translate, which stay as reference geometry
- Document what is not supported
- Revit — native element load where supported by the connector
- Blocks as Families — load block instances as Revit families (optional load setting)
Connector depth varies by host and version. Use each connector’s user guide for supported publish
types, load settings, and limitations—the lists above are illustrative, not exhaustive.
How depth maps to publish / load modes
Product and engineering implications
- Scope publish first. Prove publish quality (units, stable ids, display values, analysis payloads) before investing in load converters.
- Separate conversion codebases. Publish converters and load converters should not assume symmetry; sharing utilities is fine, sharing 1:1 reversible mappings is not.
- Set user expectations. Document supported publish types, load types, and that edits in the host after load do not sync back via Speckle.
- Prefer downstream consumption in Speckle (viewer, dashboards, Automate, other connectors) instead of load when the goal is coordination only.
Related
Data & build order
Projects, models, versions, and suggested build sequence.
Desktop host
Add-ins and agents that implement publish and load.
Connector schemas
Per-host data shapes for published objects.
Resources
SDKs and reference repositories.