diff --git a/src/Plugin/UiPatterns/Source/TokenSource.php b/src/Plugin/UiPatterns/Source/TokenSource.php
index 7ccdaffde5e8fce568c1e0a1ad27684e01e153c8..f7227c616973ce13c524ba9af7134f80b6392233 100644
--- a/src/Plugin/UiPatterns/Source/TokenSource.php
+++ b/src/Plugin/UiPatterns/Source/TokenSource.php
@@ -26,7 +26,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
   id: 'token',
   label: new TranslatableMarkup('Token'),
   description: new TranslatableMarkup('Text with placeholder variables, replaced before display.'),
-  prop_types: ['slot', 'string'],
+  prop_types: ['slot', 'string', 'url'],
   tags: [],
   context_definitions: [
     'entity' => new ContextDefinition('entity', label: new TranslatableMarkup('Entity'), required: FALSE),
diff --git a/tests/fixtures/TestDataSet.yml b/tests/fixtures/TestDataSet.yml
index 2f99c38a90bed88c82b73732f38d3e10cfae70d6..ba47ff786ddfd06005e2477a50a0b0bba7842aa8 100644
--- a/tests/fixtures/TestDataSet.yml
+++ b/tests/fixtures/TestDataSet.yml
@@ -286,6 +286,27 @@ token_2:
     elementTextEquals:
       - [ 'xpath', "//div[@class='ui-patterns-props-string']/text()",'value_text_token_2']
 
+token_3:
+  component:
+    component_id: ui_patterns_test:test-component
+    props:
+      url:
+        source_id: token
+        source:
+          value: 'http://localhost/[node:body]'
+  entity:
+    body:
+      value: 'value_text_token_2'
+  output:
+    props:
+      url:
+        value: 'http://localhost/value_text_token_2'
+  assertSession:
+    elementExists:
+      - [ 'css', '.ui-patterns-test-component' ]
+    elementTextEquals:
+      - [ 'xpath', "//div[@class='ui-patterns-props-url']/text()",'http://localhost/value_text_token_2']
+
 context_exists_default:
   component:
     component_id: ui_patterns_test:test-component