diff --git a/sourcing/model.py b/sourcing/model.py
index 15a598e..43f0862 100644
--- a/sourcing/model.py
+++ b/sourcing/model.py
@@ -169,9 +169,12 @@ class Item(TimeStampedModel):
     @classmethod
     def from_external(cls, url):
         home = url_for('.home', _external=True)
-        m = re_server_url.match(url)
-        if not m:
-            return
+        if not url.startswith(home):
+            username, _, hashid = url[len(home):].partition('/')
+        else:
+            m = re_server_url.match(url)
+            if not m:
+                return
         username, hashid = m.groups()
         item_id = doc_hashids.decode(hashid)[0]
         q = cls.query.filter(User.username == username, cls.id == item_id)