Custom maps in CRM Analytics dashboards do more than look impressive. They give users a spatially intuitive way to slice and dice data — filtering by region, territory, floor plan, or any geography that actually reflects how your business is organised, rather than a generic world map.
The challenge has always been the format. CRM Analytics expects geoJSON. Not every image exists as an SVG, and not every geography has a pre-built geoJSON available in the community. This workflow solves that: starting from any JPG, PNG, or JPEG image, you can produce a fully interactive custom map file in four steps.
Open your image in Inkscape. Your goal is to draw a shape outline over every region of the image that you want to be a separately selectable area on the map.
The most precise approach is the Draw Freehand Lines tool, which lets you trace any irregular shape. For rectangular regions — or to keep the demo simple — the Create Rectangles and Squares tool works well too.
As you draw each shape, fill it with a solid colour. The colour itself does not matter for the geoJSON conversion — what matters is that every region is a fully closed, filled shape with no gaps at the boundaries.
When all regions are outlined, save the file in DXF format (File → Save As → select Desktop Cutting Plotter DXF as the format).
Upload your .dxf file to an online DXF-to-geoJSON converter. Two reliable free options:
— ogre.adc4gis.com — robust and well-maintained. Tick the Force Download checkbox before converting.
— 2geojson.com — simpler interface, useful if ogre is experiencing issues.
Upload your DXF, run the conversion, and download the resulting .geojson file. Open it in a text editor to confirm it contains Polygon or MultiPolygon features — one per shape you drew in Step 1.
GeometryCollection types instead of Polygon types in the output, the DXF may contain open paths — go back to Inkscape and ensure every shape is fully closed.Drag and drop your .geojson file onto the Mapshaper canvas. You will see your shapes rendered as a map. Now open the console (the “Console” button in the toolbar) and run the following three commands in order:
// 1. Convert all features to polygon type polygons // 2. Initialise the name attribute on each feature each name = name // 3. Dissolve shapes by their name attribute // (enter a unique name for every shape via the data panel first) dissolve field=name
After running each name = name, click the arrow button to open the sub-menu and select Data. This opens the attribute table where you can type a unique name for each shape. Every shape must be named — any shape left with a null name will be dissolved and lost in the next command.
Once all shapes are named, run the dissolve command. Then export the file as geoJSON using Export → GeoJSON.
Region with values like “North”, “South”, “East” — your Mapshaper shape names must match those values exactly for the map to bind to your data.Create a new blank dashboard in CRM Analytics. Use a maximum or high-resolution layout (40+ columns) — this gives you the fine-grained positioning control needed to align the map overlay precisely over the background image.
Add a Container widget to the canvas. In the widget properties, set your original JPG/JPEG/PNG image as the background image of the container. This is the visual base layer.
Inside the container, create a lens from your dataset and change the widget type to Map. In the map widget properties, click the + button to upload your new geoJSON file as a custom map.
Finally, set the map widget background and border to transparent so the image shows through beneath the interactive map layer. Adjust the widget size and position until the map regions align precisely with the image below.
Any image. Any region. A fully interactive custom map in CRM Analytics — without needing a pre-built SVG or geoJSON file.